删除 git 中的合并/提交

删除 git 中的合并/提交

我使用 git 将一个分支合并到 master,现在经过几周和多次提交后,我想删除该功能/分支。我该怎么做?这似乎并不简单

答案1

如果您想要将其从历史记录中彻底删除,可以执行以下操作:

  1. git rebase -i <commit to remove>^

  2. 这将打开您的默认编辑器(通常是 vi),其中包含提交列表,其中包含您要首先删除的提交。将其从列表中删除,保存并退出。这不会在没有您要删除的提交的情况下重新定位您的分支。

一种“更安全”的方法是保留历史记录,这样您就可以表明此功能曾经存在,但被故意删除了。只需使用git revert <commit to remove>。这将创建一个额外的补丁,撤消您想要删除的提交。主要优点是您可以编辑提交消息,并解释删除此功能的原因。

答案2

如果您想撤销merge提交,您需要执行以下操作。

  1. 首先,检查git log以找到合并提交的 ID。您还会发现与合并相关的多个父 ID(见下图)。

在此处输入图片描述

记下黄色显示的合并提交 ID。父 ID 是下一行中写的 ID Merge: parent1 parent2。现在...

短篇故事:

  1. 切换到进行合并的分支。然后只需执行此git revert <merge commit id> -m 1操作即可打开vi控制台以输入提交消息。写入、保存、退出、完成!

很长的故事:

  1. 切换到进行合并的分支。在我的例子中,它是分支test,我正尝试feature/analytics-v3从中删除分支。

  2. git revert是恢复任何提交的命令。但是恢复merge提交时有一个棘手的技巧。您需要输入标志,-m否则它将失败。从这里开始,您需要决定是否要恢复分支并使其看起来与之前完全一样,parent1或者parent2通过:

git revert <merge commit id> -m 1(恢复为parent2

git revert <merge commit id> -m 2(恢复为parent1

你可以通过 git log 这些父母来弄清楚你想要走哪条路,这就是所有混乱的根源。

答案3

为了完全控制操作并保留您想要保留的任何合并提交,现代方法是使用

git rebase -i -r

相关内容