答案 0 :(得分:1)
您可以使用git-gc
运行Git垃圾收集器。
这应该删除你的悬挂提交,只要没有标签或分支指向其中任何一个。
在当前存储库中运行许多内务处理任务,例如压缩文件修订版(以减少磁盘空间并提高性能)以及删除可能从先前调用git add创建的无法访问的对象。
答案 1 :(得分:1)
如果提交确实无法访问,则日志查看器不会首先显示它。像git log --graph --oneline
这样的日志查看器的工作方式是从一些引用开始 - 通常是分支和/或标记,或者在命令行上传递的任何参数,但refs/
命名空间中的任何引用都可以通过{ {1}}。要获得--all
装饰(使用分支和标记名称等注释)任何具有其中一个引用的提交,请添加git log --graph
。
您的显示看起来有点像--decorate
的图形显示,虽然gitk通常会修饰每个引用的提交,以便您可以告诉它它出现在图表中的原因。它看起来有点(更多)像TortoiseGit或SourceTree的显示,但我不使用这些(也很少使用gitk)所以我不能说如何让他们咳出原因他们正在向你展示这些提交。
请注意,名为gitk --all
的{{1}}使用的存储引用可以保留一系列其他被放弃的提交,例如git stash
留下的提交,在存储库中存活,远远超过他们正常的恢复生命周期。如果你有旧的无用存储,你可能需要refs/stash
他们。git rebase
命令也复制它修改的所有引用,将原始文件留在git stash drop
(所以例如,git filter-branch
,分支refs/originals/
的引用名称,当您通过过滤器复制来自{{的所有提交获得新的refs/heads/master
时,将移至master
1}})。
除此之外,其他正常隐藏的引用都在Git的 reflogs 中,这些是在30天恢复期内保持放弃的提交,还有一些特殊的引用名称,如refs/originals/refs/heads/master
,refs/heads/master
,master
和ORIG_HEAD
(当然还有MERGE_HEAD
本身,但通常只包含分支名称。)
当提交链真正无法访问时,日志查看器将无法显示它,CHERRY_PICK_HEAD
将收到它。