git rebase

1 使用git rebase的通常开发过程git

假设Git目前只有一个分支master。开发人员的工做流程是单元测试

git clone master branch
在本身本地checkout -b local建立一个本地开发分支
在本地的开发分支上开发和测试
阶段性开发完成后(包含功能代码和单元测试),能够准备提交代码
首先切换到master分支,git pull拉取最新的分支状态
而后切回local分支
经过git rebase -i 将本地的屡次提交合并为一个,以简化提交历史。本地有多个提交时,若是不进行这一步,在git rebase master时会屡次解决冲突(最坏状况下,每个提交都会相应解决一个冲突)
git rebase master 将master最新的分支同步到本地,这个过程可能须要手动解决冲突(若是进行了上一步的话,只用解决一次冲突)
而后切换到master分支,git merge将本地的local分支内容合并到master分支
git push将master分支的提交上传
本地开发分支能够灵活管理测试

2 git rebase是什么对象

git rebase处理的对象是本地分支,它将上游分支的修改合入到本地分支,好比将主干分支的修改合入到本地分支。本地分支原本是基于主干的某次提交,如今主干分支有新的提交,git rebase以后,本地分支将基于主干分支最新的提交。正如rebase的含义,原本是base主干分支的老的提交,如今rebase,基于主干分支最新的提交。开发

git rebase的时候应该切换到本地分支,而后git rebase master,解决冲突以后,git rebase --continue。同步

3 将本地分支合入到主干分支工作流

切换到主干分支,git checkout master,而后git merge dev,若是出现冲突的话,解决冲突,而后git add/git commit就行。it

分支合并是主干分支最新的提交、feature分支最新的提交和它们的最近祖先提交三者之间的合并,而后生成一个新的提交。若是建立分支以后主干不前进的话,合并分支的时候不会生成新的提交。ast

4 git rebase用在本地分支上吗?git rebase master分支到本地分支了以后呢?若是有修改的话,再如何合入master分支呢?di

git rebase会把本地分支上的提交保存为patch,从新生成新的提交,保留master上的提交历史。因此,git rebase前最好用git rebase -i HEAD~3来合并本地的提交。再合入master分支的话,就到master分支,把本地的分支merge进去就行。而后再提交到远程库。 

5 注意事项

“我我的推荐你们开发的时候, 尽可能及时rebase上游分支(我习惯是每周merge一次),有冲突提早就fix掉,即便咱们本身的分支开发了好久(哪怕是几个月),也不会积累太多的conflict,最后合并进主分支的时候特别轻松, 很是反对从master check出新分支,本身闷头开发几个月,结果最后merge进主分支的时候,一大堆冲突,本身还嗷嗷叫的行为。”
6 git merge作的事情
将两个分支的当前快照和他们的共同祖先三者进行了一个merge,而后生成一个新的提交。
7 git rebase相关的命令
经过下面的命令合并本地的4次提交。
git rebase -i HEAD~4
相关文章
相关标签/搜索