小编典典

如何删除 git 历史记录中的特定修订?

all

假设您的 git 历史记录如下所示:

1 2 3 4 5

1-5 是单独的修订版。您需要在保留 1、2、4 和 5 的同时删除 3。如何做到这一点?

当要删除的修订后有数百个修订时,有没有一种有效的方法?


阅读 76

收藏
2022-06-04

共1个答案

小编典典

要将修订版 3 和 4 合并为一个修订版,您可以使用 git rebase。如果要删除修订版 3
中的更改,则需要在交互式变基模式下使用编辑命令。如果要将更改合并到一个修订版中,请使用 squash。

我已经成功地使用了这种 squash 技术,但以前从未需要删除修订。“拆分提交”下的 git-rebase
文档有望为您提供足够的想法来弄清楚。(或者其他人可能知道)。

git 文档

从您希望按原样保留的最旧提交开始:

git rebase -i <after-this-commit>

一个编辑器会被你当前分支中的所有提交触发(忽略合并提交),这些提交在给定提交之后。您可以将此列表中的提交重新排序为您心中的内容,您可以删除它们。该列表或多或少看起来像这样:

选择 deadbee 本次提交的单行

选择 fa1afe1 下一次提交的单行

...

在线描述纯粹是为了您的乐趣;git-rebase
不会查看它们,而是查看提交名称(在此示例中为“deadbee”和“fa1afe1”),因此不要删除或编辑名称。

通过将命令“pick”替换为命令“edit”,您可以告诉 git-rebase
在应用该提交后停止,以便您可以编辑文件和/或提交消息,修改提交,并继续变基。

如果要将两个或多个提交合并为一个,请将命令“pick”替换为“squash”以进行第二次和后续提交。如果提交有不同的作者,它会将压扁的提交归于第一次提交的作者。

2022-06-04