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

Sha*_*tin 1 git git-rewrite-history

我有这样的提交历史:

f85179d ten
7de4071 nine
5c7a482 eight
9585035 seven
b41bffc six
d102f05 five
5a28cb9 four
6fc27c9 three
524b0c7 two
bb7e6ae one
Run Code Online (Sandbox Code Playgroud)

我想将提交"一"到"五"压缩成一个提交,使它看起来像这样:

f85179d ten
7de4071 nine
5c7a482 eight
9585035 seven
b41bffc six
4tg56y5 Squash five commits into one commit.
Run Code Online (Sandbox Code Playgroud)

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

lar*_*sks 5

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

有关git存储库格式的更多详细信息,请参阅此文档文档.

  • 这是一个有意设计,以防止篡改历史. (2认同)