我有一个包含一些分支的复杂存储库。所有分支都有一个共同的祖先提交 Z。
/..\ branch4
A - B - C - Z -............... branch1
\....../ branch2
\............ branch3
一些分支完全合并到另一个分支中,另一些则是“死叉”。
现在我想清理旧历史记录,删除并忘记 Z 之前的每个分支的提交。最终结果应该是:
/..\ branch4
Z -............... branch1
\....../ branch2
\............ branch3
如果您需要将所有提交压缩为一个:
git log --oneline
,然后记下 A 提交哈希值。git rebase -i <commit-hash>
squash
标记每个提交。相反,如果您想删除旧的提交,请将步骤 3 从
squash
更改为 drop
。
请记住,提交可能是许多分支的一部分,因此删除它们,从任何分支中删除它们。
在任何一种情况下,您都可以根据需要自定义最终提交消息。