从历史记录中删除合并提交

时间:2021-05-17 15:12:04

标签: git

在查看了无数的网站和 StackExchange 问题之后,我想再补充一个关于 Git 的问题。我认为 this answer 非常接近我想要的,但我没有成功。

Gitg 显示我的存储库有分支(ok),但其中一个分支被合并到另一个分支两次。我想通过删除进行这些合并的提交来修改历史记录。这些提交有一条以“合并分支”和“合并分支”开头的消息。我想要的只是保持这些分支平行,未合并。此外,在这些合并之后对这些分支的提交必须保持完整。这些分支不接触相同的文件,所以不应该有冲突。

请看这里 Gitg 的截图。所以,我希望这些以蓝色绘制的分支不连接到以绿色绘制的分支。我该怎么做(当然,为了操作存储库,我使用的是命令行)。

Gitg showing merged branches

1 个答案:

答案 0 :(得分:0)

如果合并后的历史是一条直线,你可以试试这个:

git checkout revision-before-first-merge
git cherry-pick id-of-second-merge..the-branch
# now you have a history like what you want
# if you like how it looks, then it's time to move the branch
git branch -f the-branch # set the branch over here
git checkout the-branch

警告:这是重写这个分支的历史,这在技术上是可行的(正如我们刚刚看到的),但它有影响。