[英]Git — Merge then Revert then trying to Merge again
Git 有时可能很神秘,那里的文档更是如此。 我和我的团队都面临着一个非常特殊的情况。 作为参考,我们有一个生产就绪的主分支和一个开发分支。 我们的分支策略如下:
其中一位开发人员在将其合并到 master 之前不小心将 development 合并到了他的特性中,因此还有一堆未经审查的代码也进入了特性。 我将该合并恢复为 master,然后开发人员修复了他的分支以删除所有未经审查的代码。 然而,当试图再次将他的分支合并到 master 时,它抛出了一个错误。 这似乎是因为 master 已经有了功能分支的历史,所以它不会再接受它。
处理这种情况的正确方法是什么。
PS - 试图围绕合并和变基之间的区别。 我知道合并会引入代码更改并保留其他所有内容,从而为提交创建新的历史记录。 但是,rebase 是如何工作的? 我的理解是,它将一个分支设置为与另一个分支完全相同的 state。 这个对吗?
Git 文档本身很好地解释了这一点,在revert a faulty merge下。 引用莱纳斯:
恢复常规提交只是有效地撤消了该提交所做的事情,而且相当简单。 但是恢复合并提交也会撤消提交更改的数据,但它对合并对历史的影响绝对没有任何作用。
所以合并仍然存在,它仍将被视为将两个分支连接在一起,未来的合并将把合并视为最后一个共享的 state - 恢复引入的合并的恢复根本不会影响它。
因此,“还原”撤消了数据更改,但它在某种意义上不是“撤消”,因为它不会撤消提交对存储库历史的影响。
因此,如果您将“还原”视为“撤消”,那么您将永远错过这部分还原。 是的,它会撤消数据,但不,它不会撤消历史记录。
有两个选项可以“再次”获取分支的更改:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.