在 git 中删除合并/提交

15 git

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

Mur*_*nik 8

如果要从历史记录中完全删除它,可以执行以下操作:

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

  2. 这将打开带有提交列表的默认编辑器(通常是 vi),其中包含要首先删除的提交。从列表中删除它,保存并退出。如果没有您要删除的提交,这不应该重新设置您的分支。

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

  • @barfuin你可能忘记了`&lt;commit to remove&gt;^`末尾的插入符号 (2认同)

小智 8

如果您想恢复merge提交,您必须执行以下操作。

  1. 首先,检查git log以查找合并提交的 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。需要输入-mflag,否则会失败。从这里开始,您需要决定是否要恢复您的分支并使其看起来就像是在parent1parent2通过:

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

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

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