有时,Git可能会很隐蔽,那里的文档甚至更是如此。我和我的团队面临非常特殊的情况。作为参考,我们有一个生产就绪的主分支和一个开发分支。我们的分支策略如下:
其中一个开发人员在将开发人员合并到主版本之前不小心将开发合并到了他的功能中,因此也有很多未经审查的代码也加入了功能。我将合并还原为master,然后开发人员修复了其分支,以删除所有未经审查的代码。但是,当尝试将其分支再次合并到master时,它引发了错误。似乎是因为master已经具有功能分支的历史,因此不再接受它。
处理这种情况的正确方法是什么。
P.S。 -尝试绕过合并和重新定标之间的差异。我知道合并会引入代码更改,而其他所有内容保持不变,从而为提交创建新的历史记录。但是,变基如何工作?我的理解是,它将一个分支设置为与另一个分支完全相同的状态。这是正确的吗?
这在revert a faulty merge下的Git文档本身中有很好的解释。引用Linus:
还原常规提交只会有效地撤消该提交做到了,而且相当简单。但是也还原合并提交撤消提交已更改的data,但绝对可以合并对history的影响没有任何影响。
因此合并将仍然存在,并且仍将被视为加入这两个分支在一起,将来的合并将看到合并为最后一个共享状态-以及还原了合并带来的还原完全不会影响。
因此,“还原”会撤消数据更改,但这非常not“撤消”在某种意义上说不会撤消提交对存储库历史记录。
因此,如果您将“还原”视为“撤消”,那么您将始终错过这部分还原。是的,它撤消数据,但是不,它不会撤消历史记录。
有两个选项可以再次更改分支: