git version 1.7.11.4
有没有任何安全的方法来摆脱悬空blob /提交。我只是担心我不小心删除了一些东西。
git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (13017/13017), done.
dangling blob 6b9542f29f534b377f9ad280d6d342a4114146ec
dangling blob 0d1779fc8bac49a45b216e1891345b7f69ee068c
dangling blob f8ae5bad210ac84d66d28cb723dcad5b3f325bff
dangling blob e84f8c37c239bc591a52b1169669fb8f593b39b2
dangling blob 5d605b5d6ca0c7cb8d1bc05607eefada2092219b
dangling blob 9363f36de455d504cba3e78fbfb0cb133292fe55
dangling blob 0df63ff9133cc21b45a417958cb012689ebdc4cd
dangling commit fe764632c9d283b558f1326c56f940b3f3aea931
dangling blob b67bedfd9682fbc84f38d44b5112087dff004adc
我尝试了以下内容:
git gc --auto
git clean -f
答案 0 :(得分:2)
首先,有reflog
跟踪所有分支历史记录。默认情况下为90天(gc.reflogExpire)。
还有gc.reflogExpireUnreachable
即30天。因此,如果您在分支上设置了reset
,则可以通过fsck
访问悬空提交30天。
此外,还有一个垃圾收集器修剪设置,默认情况下会在2周后删除悬空对象(gc.pruneExpire
配置设置)。
关于如何从存储库中清除对象,您可以在此处阅读其他问题,例如: How to REALLY delete a git branch (i.e. remove all of its objects/commits)?
clean
从工作副本中删除未跟踪的文件,它与blob / commits无关。