使用TortoiseGit清除旧提交

时间:2018-12-17 22:59:16

标签: git tortoisegit

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

我的承诺可以追溯到2017年初。

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

我在PC上尝试过此操作

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也许您在BitBucket上仍然有很多远程分支,如果从分支/标签中引用它们,Git不会丢弃提交

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

Tags

1 个答案:

答案 0 :(得分:1)

没有重写历史记录(例如,重新设置基准),则无法删除/更改历史记录。根据设计,Git使用所有提交的链接。因此,更改旧的提交将导致修改完整的历史记录以及所有随后的SHA1(提交ID)。也许您在BitBucket上仍然有很多远程分支(不包含在您的主master分支中),如果从分支/标签中引用了它们,Git不会丢弃提交。 -因此,在重新设定基准或更改历史记录之后,您必须强行推入所有分支和(或删除所有未使用的)标签,这一点很重要-否则它们仍指向旧历史记录(由于某些标签/分支指向它而无法删除)

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