我有一个本地分支feature
,为了使将来合并到master
更容易,我的意图是通过以下方式"更新"feature
分支:
git pull --rebase
git checkout feature
git merge --no-ff master
git push origin feature
在解决合并冲突之后,但在commit
和push
之前,我意识到我忘记运行git pull --rebase
,因此,我的本地master
实际上是在远程master
之后的两个提交。
我是否需要中止合并,即回到运行merge
之前的情况,然后在我之前的合并尝试之后执行git pull --rebase
?或者我可以做些什么来包括remote master
更改到我的local master
,因为我会在当前merge
之前进行更改。解决缺少两个提交的合并冲突显然与当前的解决方法不同。
希望我的问题有意义
如果您的本地master
只是在远程master
之后的两个提交,则无需中止任何操作或重新启动,因为您可以获取并合并这两个提交。
只需解决合并冲突并将更改提交到功能分支,然后更新master,并再次从master合并到feature
。这与您首先更新了 master的情况完全相同,但随后有人向origin/master
添加了一些新的提交,即您的本地master将再次落后于origin/master。但这不是问题,你只需更新你的母版并再次合并为feature。
或者解决冲突并提交到特性分支,然后仅git fetch origin && git merge origin/master
将最新的上游更改直接应用到feature
分支。(这意味着feature
的提交还没有在你的master
分支中,但没关系,下次更新时你会在master中得到它们)。
注意:如果你启用了rerere
,那么如果你决定中止并重新开始合并,那么你就不需要重新解决合并冲突,因为Git会记住这些解决方案并重用它们。