2015-07-13 67 views
1

我有一个本地分支feature,并且使未来的融入master容易我的意图是“更新”的feature分支做:忘了拉更改之前合并

git pull --rebase 
git checkout feature 
git merge --no-ff master 
git push origin feature 

解决合并冲突之后,但在commitpush之前,我意识到我忘记了运行git pull --rebase,因此,我的本地master实际上是在远程master后面的两次提交。

是否需要中止合并,即返回到运行merge之前的状态,然后再执行git pull --rebase,然后执行我之前的合并尝试?或者我可以做些什么来包括remote master对我的local master的更改,因为我会在当前的merge之前提取更改。解决与缺少的两个提交的合并冲突显然不同于当前的解决方案。

希望我的问题有道理。

+0

为什么默认使用'pull --rebase'?上游主人是否总是获得重新贷款?如果您没有对'master'进行本地更改而实际需要重新绑定,则不需要中止合并,因为主要更改应该适用于本地主服务器,因此应该干净地合并到您的特性分支。 –

+0

@JonathanWakely我在'master'中没有任何需要重定位的本地修改,所以我可以继续进行两次合并的建议吗? – micadelli

+0

是的,这应该很好。 –

回答

0

如果您的本地master仅仅是远程master后面的两个提交,因为您只需获取并合并这两个提交,则无需中止任何操作或重新启动。

只需解决您的合并冲突并将更改提交到功能分支,然后更新主设备,然后再从主设备合并到feature。这与你的最初有更新后的主人的情况完全相同,但是随后有人已经向origin/master添加了一些新的提交,即你的本地主人将再次在原产地/主人后面。但这不是问题,您只需更新主控并重新合并即可。

或者解决冲突并提交到功能分支,然后只需git fetch origin && git merge origin/master即可将最新的上游更改直接应用到feature分支。 (这意味着feature提交了不在master分支中的提交,但没关系,下次更新它时,您将在主控中获得它们)。

N.B.如果你启用rerere那么如果你确实决定放弃并重启合并,那么你不需要重新解决合并冲突,因为Git会记住分辨率并重用它们。