多人协作开发一个项目的时候,难免存在其他人更新了Dev代码的情况。这时候如果直接git pull则会自动产生一个merge记录,在git log里。通常merge log是不友好的,会给代码回溯,代码review带来一些麻烦。因此一般鼓励保持git log时间线的线性,所谓线性就是不含有merge记录。
建议在pull代码的时候进行如下操作:
- 新开发功能的时候,先切换到你的Dev分支;
- 然后git pull, 保证当前是在最新的代码上;
- 直接进行你的开发,比如你开发2天后,这时候开发完成,需要提交代码了;此时,你本地的Dev肯定比远程的要落后几个提交;
- 你先使用git stash?将你本地的change暂存;
- 使用git status查看下本地的change是否已经暂存成功,如果是新增的文件则不会被暂存,不过没关系新增的文件不会影响merge;
- 注意这时候你是一直在Dev分支上的,暂存完保证本地没有修改的change后,使用git pull,将本地的Dev更新到最新;
- 这时候基于最新的Dev,创建属于你的提交分支:git checkout -b yourFolder/branchName;
- 这时候你已经在你的新建分支上了;使用git stash pop将你暂存区的修改拿回来;没冲突则自动成功,进行步骤9?; 如果有冲突,像平常一样修改代码解决冲突,这个解决冲突的动作是在你本地,不会被记录进Git;
- 解决完冲突后,就进行正常的提交流程,git add --all添加所有修改;再git commit -m'commit info';最后git push --set-upstream origin yourFolder/branchName?,将你的分支提交到远端;
- 将你的分支提交到远端后,进行常规提交PR操作,再合进Dev
上面动作的主要目的是:把你的commit调整到Dev最后一个commit之后, 并且尽量减少merge 记录。 Notes: 因为基本一个新功能就会创建一个新分支,所以附上2条批量删除本地和远程分支的命令: 因为批量删除需要先查询,我们一般将自己的分支建在自己的文件夹底下yourFolder/branchName,方便删除查询 a. 批量删除本地分支?git?branch?|grep??'yourFolder/'?|xargs?git?branch?-D b. 批量删除远程分支?
git?branch?-r??|?grep?'yourFolder/'?|?sed?'s/origin///g'?|?xargs?git?push?origin?--delete
|