2016-04-27 75 views
0

我有2个远程分支功能和主。主窗口合并到特征分支上。之后的提交发生在master和feature分支中。 现在我试图从主到功能进行另一个常规合并。事实证明这是有问题的,因为新的合并并不完全符合已经发生的壁球合并。一个小搜索显示,南瓜合并是问题。撤消git壁球合并和git再合并

所以,现在我想,采取以下

  1. 恢复所有的特性分支,直到壁球合并的提交(我从队伍的确定,因为没有很多恢复的变化。我可以以后再做)。 对于恢复我用

$ git的恢复--no提交SHA1

$ git的恢复--no提交SHA2

...

$ git的承诺-m“恢复分支,直到壁球提交”

$混帐推起源HEAD:裁判/为/分公司/功能

现在我的功能分支显示额外的提交恢复当我做git日志。

  • 现在我想尝试以下到主合并恢复功能 -

    $ git的合并--no-FF产地/主-m“从主合并“

    格里特审查已经在我的远程回购启用

  • 我的问题是 -

    1. 这会得到所有从主人到功能的最新变化,包括旧壁球合并进来的主变更吗?

    2. 此合并是否会生成单一的gerrit评论?

    3. 任何简单的解决方案,如果我的方法不起作用?

    请在这里感谢任何帮助。谢谢。

    +0

    为什么不把rabase功能分支与主 - 我建议避免合并提交 - 为什么你需要合并提交功能分支? – HiB

    回答

    0

    回答你的问题:

    1. 我不知道,但,但我敢打赌,你一分钱一斤(或一元一分,如果你喜欢),你会惹上与git revert

    2. 一个讨厌的一塌糊涂不知道,但我怀疑它 - 见下文

    3. 是(因此这不是一个完全无用的答案,我希望如此)。

    请勿git revertgit revert放入另一个与指定提交相反的提交,使混乱更大。 git revert是解决最近的合并不好的一个可怕的工具。这是一个更好的撤销历史单一提交的工具。你真正想要做的是假装合并不良从未发生过。

    相反:

    • git reset --hard [commitBeforeYouMadeTheMess]
    • git merge ...(或任何你之前做过)

    为了安全起见,你可以通过git branch backup-my-mess先于很多,或者做一个不同的分支git checkout -b see-if-I-can-clean-up-my-mess

    请注意,如果你已经把你的烂摊子(哦,亲爱的),你可能需要做一个强制推动来解决它。

    如果你想避免这种情况,也许使用不同的功能分支(foobar-2或其他),并从有问题的提交之前分支,然后假装以前的功能分支从不存在。

    这并没有具体解决gerrit的问题(因为我不是gerrit的人),但你需要首先得到git位。

    +0

    感谢您指出git回复问题。我用过git reset --hard – JHead

    +0

    @JHead不需要谢谢。只要赞扬/接受答案,如果它是有用的。 – abligh

    +0

    我已经投了答案,但我仍然需要弄清楚如何得到一个单一的gerrit复习后的定期合并审查。也只是为了让你知道我使用git重置没有困难,这样我可以有一个提交和审查生成的重置。你认为它会有问题吗? – JHead

    0

    是否有可能通过Gerrit恢复提交。您可以在提交的补丁集页面找到该按钮。这是非常简单和方便。我建议不要将主人合并到功能分支,而不是将其重新绑定。