git - 如何删除 git 中的前 n 条提交消息?

标签 git

我正在配置 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 documentationBUGS 部分。)

关于git - 如何删除 git 中的前 n 条提交消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684299/

相关文章:

git - 设置 git 提交消息策略

git - 有没有办法 merge 两个分支而不丢失文件和更改?

git add、commit 和 push 命令合二为一?

windows - Windows下的Git Hook

git - 列出 GIT 历史中给定行号的所有版本

尝试推送时 Github 出错

git - 如何使用git比较文件的工作副本、暂存副本和提交副本

Git全局配置用户依赖于系统帐户?

git - 征求意见 : revision control and binaries

Git 获取单个提交