Git - 如何在不影响最近提交的sha-1的情况下删除旧提交?

Dor*_*orr 0 git

我有巨大的git存储库(二进制文件),我想删除旧的提交以缩小它的大小.

假设我的提交历史;

$ git log
g0g0g0 - patch 06
f0f0f0 - patch 05
e0e0e0 - patch 04
d0d0d0 - patch 03
c0c0c0 - patch 02
b0b0b0 - patch 01
aaaaaa - initial empty
Run Code Online (Sandbox Code Playgroud)

每个提交都有标记;

$ git tag
tag01 -> b0b0b0
tag02 -> c0c0c0
tag03 -> d0d0d0
tag04 -> e0e0e0
tag05 -> f0f0f0
tag06 -> g0g0g0
Run Code Online (Sandbox Code Playgroud)

这就是我想要的;

$ git log
g0g0g0 - patch 06 <- tag06
f0f0f0 - patch 05 <- tag05
e0e0e0 - patch 04 <- tag04
aaaaaa - initial empty

$ git tag
tag01 -> deleted b0b0b0
tag02 -> deleted c0c0c0
tag03 -> deleted d0d0d0
tag04 -> e0e0e0
tag05 -> f0f0f0
tag06 -> g0g0g0
Run Code Online (Sandbox Code Playgroud)

是否可以删除旧的三次提交(b0b0b0,c0c0c0,d0d0d0)而不更改其他提交的sha-1值(g0g0g0,f0f0f0,e0e0e0)?

Ism*_*awi 8

不,这是不可能的.提交的父项用于计算其哈希值.如果历史记录的任何部分发生更改,则提交哈希值将不同.