git
# git
相关问题
- 怎么把当前目录变成git可以管理的仓库
- git init之后会生成一个.git文件 这个文件的作用是什么
- 拉取别人仓库代码后,我不需要别人代码仓库的之前的git记录,怎么实现
- 版本控制系统可以告诉我们图片 视频这些具体改了什么吗
- 查看历史提交记录
- 在历史提交记录里面怎么标识当前版本
- 回退到指定版本操作
- 查看命令历史
========================================================
- 查看本地修改了哪些文件
- git add . 做了什么
- git commit -m "" 做了什么
- git diff 做什么
- 撤销修改 git checkout -- fileName 撤销工作区修改
- 撤销修改 git reset HEAD fileName 暂存区到工作区
- 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
- git branch -D 强制删除 git branch -d 普通删除
- 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致
- 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
- rebase操作可以把本地未push的分叉提交历史整理成直线;
- rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
=========================================================
- 标签
- 命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- 命令git tag -a -m "blablabla..."可以指定标签信息;
- 命令git tag可以查看所有标签。
=========================================================
- git pull === git fetch + git merge 各自实现原理
- git rebase 和 git merge https://www.jianshu.com/p/4079284dd970
=========================================================
- 关联一个远程仓库
- 注意:使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https
- git clone 克隆一个本地库(使用场景)
- 本地切换新分支
- git merge 命令用于合并指定分支到当前分支
- git branch -d +分支名 删除本地分支
- 合并代码有冲突之后 git status 可以告诉我们哪个文件有冲突
# 实现从别人github下fork别人仓库 然后自己做部分修改后 提交到别人仓库
- frok别人仓库到自己github
- 拉取自己github仓库代码到本地仓库并新建一个分支,采用两种方式
- clone
- pull
- 本地代码修改后-提交代码
- git add .
- git commit -m ""
- 拉取远程仓库代码
- git pull origin 远程分支:本地分支 如果不指定远程分支直接拉取会怎么样
- git fetch origin + git rebase origin/远程分支 git pull == git fetch + git merge
- push 本地代码到自己远程分支
- 提交request
# git commit 规范指南
必要性
- 可读性好,清晰,不必深入看代码即可了解当前commit的作用
- 为 Code Reviewing 做准备
- 方便跟踪工程历史
- 让其他的开发者在运行 git blame 的时候想跪谢
# commit message 格式
- header 必须 只有一行 包括三个字段
<type>(<scope>): <subject>
type包含
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- perf: 重构改进性能的代码优化
- test:增加测试
- chore:构建过程或辅助工具的变动
- body 非必须 填写一些备注信息
- footer 非必须 一般关联哪个issue #1