压缩较旧的提交,同时保留较新提交的SHA1

时间:2015-02-17 18:04:54

标签: git git-rewrite-history

我有这样的提交历史记录:

f85179d ten
7de4071 nine
5c7a482 eight
9585035 seven
b41bffc six
d102f05 five
5a28cb9 four
6fc27c9 three
524b0c7 two
bb7e6ae one

我想将提交“one”到“five”压缩成一个提交,使它看起来像这样:

f85179d ten
7de4071 nine
5c7a482 eight
9585035 seven
b41bffc six
4tg56y5 Squash five commits into one commit.

重要的是,我想保持未取消的提交的SHA值相同。这意味着我不能只使用`git rebase --root -i',因为它会改变所有的哈希值。

1 个答案:

答案 0 :(得分:5)

无法重写git存储库的历史记录维护现有提交的提交ID。提交id是根据给定提交的内容(包括目录树的内容,作者,提交者,日期等)生成的,以及其父级的id。这意味着如果您更改历史记录中的任何提交,则每个后续提交都将具有新的提交ID。

有关git存储库格式的更多详细信息,请参阅this docthis one