我正在配置 git 并在此阶段创建了一些测试提交(我提交了 1 个字符的更改以及毫无意义的提交消息)。在这些之后我使用了 git 并创建了很多正常的提交。所以现在,当我使用 git rev-list --all --pretty
查看提交历史并滚动到足够远时,我看到了这些可怕的前 N 次提交。
我试图摆脱它们,但我发现了重做 git 的建议(这对我来说不是一个有效的想法)。我还发现 first commit is special所以我不能删除它。
但是有没有办法删除前 N 个提交(不包括第一个)并重命名第一个?
最佳答案
如果您还没有“发布”您的提交(让其他人可以使用它们),您可以使用 git rebase
的历史重写效果来丢弃早期提交。
这种重写是通过复制您要保留的所有提交到新提交来实现的。然后旧的就被抛弃了。如果您已经发布了提交,那么任何其他捕获它们的人都已经拥有了它们,您对此无能为力;并为您想要保留的副本制作这些新副本,并要求他们切换到新副本,这会给他们带来很多无用的工作。所以这是不礼貌的,没有充分的理由你不应该这样做。
不过,如果它是私有(private)存储库,那一切都很好。
为了能够从头开始重写每个提交,请使用 git rebase -i --root
。这将为您提供每个提交的列表,包括第一个提交,每个提交都有 pick
命令;只需删除您想要删除的那些。 (请注意,这将“pull 平”任何 merge 。即使在删除一些提交时也可以保留它们,但我没有对此进行试验;请参阅 git rebase
documentation 的 BUGS
部分。)
关于git - 如何删除 git 中的前 n 条提交消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684299/