Git 修复混乱的分支历史记录
对于所有的Git专家 目前,我在合并一个长期存在的特性分支时遇到了一些困难。这样,Git撤销了去年对主分支所做的许多更改。因为我是这个项目的新手,所有以前的员工都不在了,所以我对Git历史上的错误做了一些研究。以下是我们项目的简化历史:Git 修复混乱的分支历史记录,git,merge,Git,Merge,对于所有的Git专家 目前,我在合并一个长期存在的特性分支时遇到了一些困难。这样,Git撤销了去年对主分支所做的许多更改。因为我是这个项目的新手,所有以前的员工都不在了,所以我对Git历史上的错误做了一些研究。以下是我们项目的简化历史: o---.....---o---...---D (Feature-Branch) / / \ ---o---A---.....---B---.......---C-
o---.....---o---...---D (Feature-Branch)
/ / \
---o---A---.....---B---.......---C---o (Master-Branch)
在项目历史中,我可以看到提交“B”被合并到功能分支中。但是,在这个合并提交中,来自提交“B”的更改似乎被放弃,而进行了一些其他更改。但没有真正的合并。当我尝试将commit“D”合并回主分支时,Git会与公共祖先“B”进行三方合并。因此,仅在提交“D”中比较提交“C”和“D”与提交“B”进行更改。Git正确地将这些更改用于结果合并提交
现在,我不知道如何解决这个“合并冲突”。据我所知,强迫Git选择我选择的共同祖先是不可能的。此外,恢复所有有缺陷的合并提交也不是一个真正的选项,因为有很多
有人知道如何在不手动选择所有正确更改的情况下修复此问题吗?您可以强制公共祖先。。。说你想成为一个被迫的共同祖先。您可以这样做:
git checkout --detach D
git reset --soft A
git commit -m "new D"
git merge C
那就行了。如果您不介意丢失D的原始历史记录,可以这样保存它(在完成合并后)。如果您想保留D的原始历史记录,那么您可以这样做(在完成合并之后)
这将输出一个ID,使用该ID创建一个分支,然后您就有了合并修订版。您可以强制公共祖先。。。说你想成为一个被迫的共同祖先。您可以这样做:
git checkout --detach D
git reset --soft A
git commit -m "new D"
git merge C
那就行了。如果您不介意丢失D的原始历史记录,可以这样保存它(在完成合并后)。如果您想保留D的原始历史记录,那么您可以这样做(在完成合并之后)
这将输出一个ID,使用该ID创建一个分支,然后您就有了合并修订版。。。。。你可以用一些技巧让git做你喜欢的事情。你希望你的“共同祖先”是什么?嗯。。。。你可以用一些技巧让git做你喜欢的事情。你希望你的“共同祖先”是什么?