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

4
我正在配置git,在这个阶段创建了几个测试提交(我提交了一个字符的更改,并附带无意义的提交消息)。之后我使用git并创建了许多正常的提交。因此,现在当我使用git rev-list --all --pretty查看提交历史记录,并向下滚动,我会看到这些可怕的前N个提交。
我试图摆脱它们,我发现有人建议重新开始git(但对我来说不是一个有效的方法)。我还发现第一次提交是特殊的,所以我无法删除它。
但是是否有一种方法可以删除前N个提交(不包括第一个),并重命名第一个提交?
1个回答

4
如果您还没有“发布”您的提交(使它们对他人可用),您可以使用git rebase的历史重写效果来丢弃早期的提交。这种重写通过将您想要保留的所有提交复制到新的提交中来实现。然后抛弃旧的提交。如果您已经发布了提交,任何已经获取它们的其他人都已经拥有它们,您无法对此做任何事情;并且制作这些您想要保留的提交的新副本,并要求他们切换到新副本,会给他们带来很多无用的工作。因此这是不礼貌的,除非您有一个非常好的理由,否则不应该这样做。
但是,如果这是一个私有存储库,那么一切都很好。
要能够从开头重写每个提交,请使用git rebase -i --root。这将为您提供包括第一个提交在内的每个提交的列表,每个提交都有一个pick命令;只需删除您想要删除的提交即可。(请注意,这将“展平”任何合并。即使删除了某些提交,也有可能保留它们,但我没有进行过实验;请参阅git rebase文档BUGS部分。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接