Eog*_*anM 12 git git-rewrite-history
我想要摆脱一大块斑点!我以为我使用这个解决方案删除了文件:http:
//dound.com/2009/04/git-forever-remove-files-or-folders-from-history/
(我用过-- --all而不是HEAD删除文件从所有分支机构)
rm -rf .git/refs/original/ && git reflog expire --all &&
git gc --aggressive --prune
Run Code Online (Sandbox Code Playgroud)
我通过这个看了包文件夹为什么我的git存储库这么大?
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k3n
... last 4 lines:
bc7ae9801052180b283cd81880753549f0f92587 blob 19464809 749446 305054873
acd5f09a35846bec25ebc324738139e5caabc50f blob 294278199 71381636 39607483
986d152935434b56cf182d8a32e24cb57af75ac3 blob 480385718 108184804 110989119
ba9d1d27ee64154146b37dfaf42ededecea847e1 blob 761172819 27430741 277589990
Run Code Online (Sandbox Code Playgroud)
该脚本git-find-blob取自哪个提交有这个blob?
$ ./git-find-blob ba9d1d27ee64154146b37dfaf42ededecea847e1
Run Code Online (Sandbox Code Playgroud)
但它没有找到任何东西.
任何想法如何摆脱我的存储库?
您可以使用git repack -Ad强制git重建包,并将任何无法访问的对象解压缩为松散的对象.此时,您可以使用git gc --prune=now丢弃无法访问的对象.
您还应该仔细检查您的reflog实际到期了.我相信git reflog expire --all将默认为90天(或30个无法访问的对象),因此您可能想要使用git reflog expire --expire-unreachable=now --all(这需要在重新包装+ gc之前完成).
首先,在git gc调用中,您应该使用--prune=now,因为默认情况下是保留不到 2 周的对象。
其次,git-find-blob默认情况下使用的命令仅在HEAD提交的历史记录中查找,因此如果 blob 位于另一个分支上,则该脚本将错过它。尝试将其调用为:
./git-find-blob ba9d1d27ee64154146b37dfaf42ededecea847e1 --all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |