Git:什么是一个悬而未决的提交/ blob,他们从哪里来?

我在寻找悬挂提交和斑点的基本信息。

我的回购看起来很好。 但是我第一次运行git fsck来看看它做了什么,我有一长串“晃来晃去的斑点”和一个“悬挂提交”。

这些是什么? 哪儿来的呢? 他们是否指出我回购的状况有什么不同(好的或坏的)?

在使用你的git仓库的过程中,你最终可能会退出操作,并采取其他措施,导致中介blob,甚至git为你做的一些事情,以帮助避免信息的丢失。

最后(有条件地,根据git gc手册页 )它将执行垃圾回收并清理这些东西。 你也可以通过调用垃圾收集进程git gc来强制它。

有关更多信息,请参阅git-scm站点上的维护和数据恢复 。

GC的手动运行默认会在运行安全网的这个命令之前的两个星期。 事实上,偶尔运行GC有助于确保您的git存储库的高性能使用。 但是,就像任何事情一样,在破坏那些对你来说很重要的事情之前,你应该明白它在做什么。

晃来晃去blob =一个变化,使其到临时区域/索引,但从来没有承诺。 有一件令人惊讶的事情是,一旦它被添加到临时区域,你总是可以重新获得它,因为这些blob的行为像提交,他们也有一个哈希!

悬挂提交(Dangling commit) =未直接链接到任何分支或标签的提交。 你也可以拿回来

HOWTO从http://www.tekkie.ro/news/howto-remove-all-dangling-commits-from-your-git-repository/从你的git仓库中删除所有悬而未决的提交;

 git reflog expire --expire=now --all git gc --prune=now 

确保你真的想删除它们,因为你可能会决定你需要它们。