如何使用git rebase管理你的开发流程
最近在公司换了一个新部门,之前代码的提交流程比较混乱,这里整理一下比较规范的Git
开发流程。
- 新建本地主分支
首先假设远程代码仓库的origin/dev
分支是我们的开发分支。
$ git checkout -b dev origin/dev
第一步先新建一个本地的 dev
分支,并和远程的origin/dev
分支关联起来。后面会一直将这个分支保持和origin/dev
代码同步。
- 切换到本地开发分支
$ git checkout -b bug_001
现在假设我有个新的bug需要修改,那么新建并切换到bug分支bug_001
。在这个分支上进行bug的修复,完成之后执行git add
和git commit
操作,先将代码提交到本地分支。
- 切换回本地主分支,并更新主分支代码
$ git checkout dev
$ git pull
切换回主分支并执行git pull
命令,拉取最新的代码,防止在解决bug过程中有人往主分支提交代码,导致本地主分支滞后。
- 回到开发分支并执行git rebase命令
$ git checkout bug_001
$ git rebase -i HEAD~2 //合并提交 --- 2表示合并两个
$ git rebase dev
切换到bug分支后执行git rebase -i
操作,可以将本地的多次提交合并为一次,以简化提交历史,这步不是必须的,也可以省略掉。本地有多个提交时,如果不进行这一步,在git rebase dev
时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)。接着执行git rebase dev
将dev
最新的分支同步到本地,这个过程可能需要手动解决冲突(如果进行了上一步的话,只用解决一次冲突),如果git rebase
的过程中出现了冲突,解决冲突后还需要执行git add
,完了接着执行git rebase --continue
命令。
- 回到主分支merge开发分支并push代码
$ git checkout dev
$ git merge bug_001
$ git push -u origin dev:dev
接着再切换回主分支,并执行merge
操作,然后就可以push
到远程开发分支了。
总结
这么做看起来比较复杂,但是好处是显而易见的。
比如说我们在开发的时候经常会遇到代码本地提交完成后push
代码的时候失败,提示我们的本地代码滞后远程分支,一般我们会选择git pull
操作,但是这么操作会导致git
提交记录里面多一次merge
记录,因为git pull
操作实际上就等于git fetch
操作和git merger
操作的结合,用git rebase
操作就可以避免这个现象,可以最大限度的保持提交记录的整洁性。
其次严格按照上面的Git
开发流程还可以保证我们本地分支的灵活度,本地开发清晰并有迹可循。
下面的是我的公众号二维码图片,欢迎关注。