在 GIT 中重做错误的合并

Posted

技术标签:

【中文标题】在 GIT 中重做错误的合并【英文标题】:Redo wrong merge in GIT 【发布时间】:2017-10-07 18:11:08 【问题描述】:

很久以前,在 git 历史中,我可以看到有人对两个分支进行了错误的合并。他有冲突,所以他干脆删除了很多冲突的更改。结果是主分支不包含这些更改(在我们检查之前我们甚至没有怀疑它)。

分支 feature 已合并到分支 developmentFeature 包含更改 XY Z。但是,Y 和 Z 在合并过程中被删除,所以 development 只包含 X。我想将 feature 合并到发展 再次,因为我需要所有的改变。但是,GIT 认为它们已经合并(它知道它们发生冲突并被手动“解决”)。

我怎样才能进行这种合并?

一些注意事项:

我不能简单地合并,根本看不到更改。 我不能挑选,它不起作用。 我不想“只是复制文件并再次提交”,因为这意味着 GIT 在关键用例中失败了 我尝试使用不同的 git 合并策略并取得部分成功,但每个策略都遗漏了一些文件,最后我在开发中没有所有的变化

当然,将 feature 合并到 新分支(从 development 提交开始,就在错误提交之前)是可行的。我可以看到所有必要的更改。但同样,由于上述原因,我无法将此新分支合并到开发中。

【问题讨论】:

cherry-pick 不起作用是什么意思?它会再次发出有关冲突的警报,但随后可以手动解决……但希望这次是正确的。 Redo bad git conflict resolution after push的可能重复 【参考方案1】:

查看 git book 关于如何撤消合并的部分:https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging#_undoing_merges

建议使用 git revert 撤消合并提交。为了解决重新合并的问题(因为 git 抱怨这些提交已经在历史记录中),它建议恢复恢复(而不是再次尝试合并)。

【讨论】:

以上是关于在 GIT 中重做错误的合并的主要内容,如果未能解决你的问题,请参考以下文章

Git:在 gitattribute 中为整个文件夹指定一个 git 合并策略“我们的”(或者只是禁用特定文件夹上的合并错误?)

你如何恢复错误的 git 合并提交

如何解决git的“不是我们可以合并的”错误

Git 因致命错误而失败。拒绝将不相关的历史与 git push 合并?

git fatal: 拒绝合并无关的历史的错误解决

git合并丢失代码问题分析与解决(错误操作导致)