如何在git中删除前n个提交消息?

时间:2014-03-27 10:09:47

标签: git

我正在配置git,并在此阶段创建了一些测试提交(我提交了一个带有无意义提交消息的1个字符的更改)。在这之后我使用git并创建了许多正常提交。所以现在当我查看使用git rev-list --all --pretty的提交历史记录并滚动得足够远时,我会看到这些可怕的前N次提交。

我试图摆脱它们,我找到了重做git的建议(这对我来说不是一个有效的想法)。我还发现first commit is special所以我无法删除它。

但有没有办法删除前N个提交(不包括第一个)并重命名第一个?

1 个答案:

答案 0 :(得分:3)

如果您还没有发布"你的提交(让其他人可以使用),你可以使用git rebase的历史重写效果来放弃早期的提交。

此重写通过复制您要保留的所有提交来进行新提交。然后放弃旧的。如果你已经发布了这些提交,那么抓住它们的任何其他人都已拥有它们,你就无法做任何事情;并制作这些你想要保留的副本的新副本,并要求他们切换到新的副本,为他们做了很多无用的工作。所以它不礼貌,如果没有充分的理由你就不应该这样做。

如果它是一个私人存储库,那么你一切都很好。

为了能够从头开始重写每个提交,请使用git rebase -i --root。这将为您提供每个提交的列表,包括第一个提交,每个提交pick个命令;只需删除您要删除的那些。 (请注意,这将"扁平化"任何合并。即使在删除一些提交时也可以保留它们,但我没有尝试过这个;请参阅BUGS部分git rebase documentation。)