以前在git上的理解很浅薄,基本都是线性使用。这回可算让我赶上一回 merge conflict,由于对很多命令不熟悉所以浪费了很多时间,所以记录一下。
- git rebase
本地提交转移至更新后的上游分支
$ git checkout mywork
$ git rebase origin
这些命令会把你的”mywork”分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把”mywork”分支更新 到最新的”origin”分支,最后把保存的这些补丁应用到”mywork”分支上。也就是说它会变成你想要reabse的branch的上游节点。
git checkout -b rc –track upstream/rc
切换新分支并指定上游分支
在这里,本地的rc 分支将由 upstream 的rc分支得到。
我这次的冲突主要在于本地的工作分支,和位于远端的master分支冲突。所以第一步是把位于 upstream的远端pull到一个新的分支,于是用到了上面的命令。git status
用这个命令,找到冲突的位置,把冲突代码整理好。git add, git commit
常规添加文件,然后commit
git push upstream rc
最后将代码push到远端上,完成一次冲突解决。