问题 我怎样才能摆脱“迷失的头脑”?


在我第一次尝试使用git时,我使用了GitHub for Windows。由于它是简单而且非常原始的工具,我决定尝试使用SmartGit。当我环顾四周时,我发现我的测试中有剩菜 - 这就是所谓的“失头”。我该如何摆脱这种垃圾?好像那样

git gc --prune=now

或类似的东西应该工作,但没有改变。我试过谷歌搜索,但每个人都试图做反向的事情 - 恢复丢失的头部或类似的丢失的提交。


7408
2018-02-23 19:08


起源



答案:


根据 手册页git gc 不会垃圾收集通过'reflogs'引用的文件(.git/logs/<ref-name> 存储库中的文件)。这些HEAD正是SmartGit / Hg显示的内容,当您删除这些日志时,未引用的提交应该由 git gc --prune=now

警告 除非没有完全摆脱这些提交的真正理由(比如删除敏感数据),否则你不应该这样做 - 也许一段时间之后你可能会对这些提交中的一个提出感兴趣。至少,在我看来,回收磁盘空间是没有充分理由的。


10
2018-02-23 19:51



回收磁盘空间不是我的理由(我的git存储库占用的空间不到0,01%) - 我想摆脱到处悬挂的“aaaeaeae test 2626”。 - Bulwersator
过了一段时间,当我有数百个时,很难找到我的提交。这对我来说是有道理的。 - pevik
@pevik,如果许多丢失的头使日志混乱,只需取消选中该选项,并且只在需要时再次重新检查。 - mstrap
@mstrap,有什么方法可以用普通的git(不是在SmartGit中)做到这一点? - pevik


答案:


根据 手册页git gc 不会垃圾收集通过'reflogs'引用的文件(.git/logs/<ref-name> 存储库中的文件)。这些HEAD正是SmartGit / Hg显示的内容,当您删除这些日志时,未引用的提交应该由 git gc --prune=now

警告 除非没有完全摆脱这些提交的真正理由(比如删除敏感数据),否则你不应该这样做 - 也许一段时间之后你可能会对这些提交中的一个提出感兴趣。至少,在我看来,回收磁盘空间是没有充分理由的。


10
2018-02-23 19:51



回收磁盘空间不是我的理由(我的git存储库占用的空间不到0,01%) - 我想摆脱到处悬挂的“aaaeaeae test 2626”。 - Bulwersator
过了一段时间,当我有数百个时,很难找到我的提交。这对我来说是有道理的。 - pevik
@pevik,如果许多丢失的头使日志混乱,只需取消选中该选项,并且只在需要时再次重新检查。 - mstrap
@mstrap,有什么方法可以用普通的git(不是在SmartGit中)做到这一点? - pevik


这将删除不仅仅是 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 "$@"

资源: https://stackoverflow.com/a/14728706/1069083


0
2017-07-11 05:43