问
- git rebase 功能
rebase意为变基,常用的两种场景为
git rebase master // 表示变基到本地master分支的最新commit
git pull origin master --rebase // 表示变基到远程master的最新commit
git rebase -i start end // -i是为了合并当前分支的commit
为什么有这两种rebase,因为我们正常合并代码会使用git merge,这样会产生新的commit,而我现在不想要新的commit
- 什么时候用git rebase
为了commit看起来工整一些,我们希望其他人提交代码的时候不要有太多commit,甚至最好就产生一个commit,这时候约定使用rebase就会使commit工整(精简)很多
实践
- 在master的某个commit拉出一条新分支 develop <~master:git checkout -b develop>
- 开发过程生成3个commit,c1,c2,c3
- 我想把三个commit合成一个,这时候用git rebase -i指令可以合并成一个 c1
- 我想把develop变基到最新master,master最后一次提交为mc2,我希望develop的commit像mc2->c1,这个时候使用git rebase master,或者git pull origin master --rebase
- 切换到master分支,<~master:git merge develop>
- 更新master代码<~master:git push>