【问题标题】:Squash older commits while preserving SHA1s of newer commits压缩旧提交,同时保留新提交的 SHA1
【发布时间】:2015-04-18 12:52:35
【问题描述】:

我有这样的提交历史:

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

我想将“一”到“五”的提交压缩成一个提交,如下所示:

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

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

【问题讨论】:

    标签: git git-rewrite-history


    【解决方案1】:

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

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

    【讨论】:

    • 对我来说关键点是,“以及作为其父级的 id。”
    • 而且这是为了防止篡改历史的故意设计。
    猜你喜欢
    • 2015-01-03
    • 2019-09-15
    • 1970-01-01
    • 2017-09-26
    • 2012-11-20
    • 2022-01-07
    • 2022-07-21
    • 2011-03-26
    • 2021-03-26
    相关资源
    最近更新 更多