在我第一次尝试使用git时,我使用了GitHub for Windows。由于它是简单而且非常原始的工具,我决定尝试SmartGit。当我环顾四周时,我发现我的测试中有剩菜 - 这就是所谓的“失头”。我该如何摆脱这种垃圾?似乎
git gc --prune=now
或类似的东西应该有效,但没有任何改变。我试过谷歌搜索,但每个人都试图做反向的事情 - 恢复丢失的头部或类似的东西丢失的承诺。
答案 0 :(得分:10)
根据man page,git gc
不会垃圾收集通过存储库中的'reflogs'(.git/logs/<ref-name>
文件引用的文件。这些HEAD正是SmartGit / Hg显示的内容,当您删除这些日志时,未引用的提交应由git gc --prune=now
收集。
警告除非没有充分的理由彻底摆脱这些提交(例如删除敏感数据),否则你不应该这样做 - 也许一段时间之后你可能会对其中一个提交。至少,在我看来,回收磁盘空间并不是一个好理由。
答案 1 :(得分:0)
这不仅会删除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 "$@"