背景
git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下:
去自己的工作分支
$ git checkout work
工作
....
提交工作分支的修改
$ git commit -a
回到主分支
$ git checkout master
获取远程最新的修改,此时不会产生冲突
$ git pull
回到工作分支
$ git checkout work
用rebase合并主干的修改,如果有冲突在此时解决
$ git rebase master
回到主分支
$ git checkout master
合并工作分支的修改,此时不会产生冲突。
$ git merge work
提交到远程主干
$ git push
这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突
变基过程中常用的几个命令
例如我们需要将iss33变基到master分支上,使用命令git checkout iss33;git rebase master
,此时会进入rebase模式,如果iss33和master分支中的提交有冲突,需要手动合并文件解决,解决冲突后使用git add
表示冲突已经解决,git rebase --continue
表示继续下一个冲突,git rebase --skip
表示跳过当前冲突,git rebase --abort
表示退出rebase模式,回到运行git rebase master
命令之前的状态。