使用 TortoiseGit 清除旧提交

Purging old commits with TortoiseGit

根据 BitBucket,我的存储库大小为 1GB。

我的承诺一直追溯到 2017 年初。

如何截断我的历史记录?例如,我有一个特定的标签 XXX,我想删除所有从 XXX 回到初始提交的提交。使存储库更小。

我在我的电脑上试过这个:

ajtru@DESKTOP-4OHL3UQ MINGW64 /d/My Programs/2017/MeetSchedAssist (master)
$ git count-objects -vH
count: 0
size: 0 bytes
in-pack: 13336
packs: 1
size-pack: 575.46 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

所以我不明白为什么在线位桶存储库超过 1GB。

@MrTux Maybe you still have lots of remote branches on BitBucket, Git won't throw away commit if they are referenced from a branch/tag

我在远程服务器上只有 一个分支,但我有 很多标签:

如果不重写历史(例如,变基),您就无法 remove/alter 历史。 Git 按照设计,使用所有提交的链接。因此,更改旧提交将导致修改完整历史记录和所有后续 SHA1(提交 ID)。也许你在 BitBucket 上仍然有很多远程分支(它们不包含在你的主要主分支中),如果它们被 branch/tag 引用,Git 不会丢弃提交。 - 出于这个原因,在变基或更改历史记录后强制推送所有分支和(或删除所有未使用的)标签很重要 - 否则它们仍然指向旧历史记录(无法删除,因为某些 tags/branches 指向它)。

大存储库通常是由于提交包含二进制文件这一事实造成的。如果可以使用源生成这些,则不应将其包含在提交中。 - 如果你想发布它们,一些平台提供了将文件附加到标签的选项(通常称为发布)。