git:删除并忘记非常旧的提交

问题描述 投票:0回答:1

我有一个包含一些分支的复杂存储库。所有分支都有一个共同的祖先提交 Z。

                  /..\                     branch4
A - B - C - Z -...............             branch1
              \....../                     branch2
                 \............             branch3 

一些分支完全合并到另一个分支中,另一些则是“死叉”。

现在我想清理旧历史记录,删除并忘记 Z 之前的每个分支的提交。最终结果应该是:

      /..\                     branch4
Z -...............             branch1
  \....../                     branch2
     \............             branch3 
git git-rebase
1个回答
2
投票

如果您需要将所有提交压缩为一个:

  1. 运行
    git log --oneline
    ,然后记下 A 提交哈希值。
  2. git rebase -i <commit-hash>
  3. squash
    标记每个提交。
  4. 退出编辑器。

相反,如果您想删除旧的提交,请将步骤 3 从

squash
更改为
drop

请记住,提交可能是许多分支的一部分,因此删除它们,从任何分支中删除它们。

在任何一种情况下,您都可以根据需要自定义最终提交消息。

© www.soinside.com 2019 - 2024. All rights reserved.