在我第一次尝试使用git时,我使用了GitHub for Windows。由于它是简单而且非常原始的工具,我决定尝试使用SmartGit。当我环顾四周时,我发现我的测试中有剩菜 - 这就是所谓的“失头”。我该如何摆脱这种垃圾?好像那样
git gc --prune=now
或类似的东西应该工作,但没有改变。我试过谷歌搜索,但每个人都试图做反向的事情 - 恢复丢失的头部或类似的丢失的提交。
在我第一次尝试使用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
不会垃圾收集通过'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 "$@"