Git 修复混乱的分支历史记录

Git 修复混乱的分支历史记录,git,merge,Git,Merge,对于所有的Git专家 目前,我在合并一个长期存在的特性分支时遇到了一些困难。这样,Git撤销了去年对主分支所做的许多更改。因为我是这个项目的新手,所有以前的员工都不在了,所以我对Git历史上的错误做了一些研究。以下是我们项目的简化历史:          o---.....---o---...---D          (Feature-Branch)         /           /           \ ---o---A---.....---B---.......---C-

对于所有的Git专家

目前,我在合并一个长期存在的特性分支时遇到了一些困难。这样,Git撤销了去年对主分支所做的许多更改。因为我是这个项目的新手,所有以前的员工都不在了,所以我对Git历史上的错误做了一些研究。以下是我们项目的简化历史:

         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做你喜欢的事情。你希望你的“共同祖先”是什么?