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 注意事项
git rebase -i HEAD~4