在我第一次尝试使用 git 做某事时,我使用了 GitHub for Windows。由于它是简单且非常原始的工具,我决定尝试 SmartGit。当我环顾四周时,我发现我的测试有剩余 - 称为“丢失的头脑”。我怎样才能摆脱这些垃圾?似乎
git gc --prune=now
或类似的东西应该可以工作,但没有任何改变。我试着用谷歌搜索,但每个人都在试图做相反的事情——从丢失的头或类似的东西中恢复丢失的提交。
根据手册页,git gc
不会垃圾收集通过“reflogs”(.git/logs/<ref-name>
存储库中的文件)引用的文件。这些 HEAD 正是 SmartGit/Hg 显示的内容,当您删除这些日志时,未引用的提交应该由git gc --prune=now
.
警告除非没有真正充分的理由完全摆脱这些提交(例如删除敏感数据),否则您不应该这样做——也许一段时间后您可能会对这些提交中的一个感兴趣。至少,在我看来,回收磁盘空间不是很好的理由。
这将不仅删除git gc --prune=now
:
git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 \
-c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"