我有一个提交,应该在挂接到它的分支的基础上执行后保留悬空/无法访问的提交,并且该提交在该过程中被压缩。 xAxis: {
visible: false
},
现在,如果我做git rebase -i <other commit id>
,我什么也没得到。
然后我做一个git branch --contains ID
。现在,我假定,它应该有效删除悬空的提交,因此不再需要对其进行引用,但是git gc --prune=now --aggressive
仍然有效。
对我在这里做错的任何想法吗?我也做了git checkout ID
,因为我担心结帐实际上是与原点一起使用的,但是结果是相同的。
预先感谢
答案 0 :(得分:0)
使用以下命令为您的提交生成符号引用(如果可能)。
git name-rev <hash>
偶然发现类似的情况,当tag
仍然引用悬空提交时。此命令返回标签和我的提交~1
的相对位置。
如果此命令没有返回有用的结果,则也可以从reflog中引用它。在运行垃圾回收之前,您是否尝试过使无法到达的提交过期?
git reflog expire --expire-unreachable=now --all
编辑:
我对此感到有些困惑,即使最后一个命令也无法强制垃圾回收来接收您的提交。您的存储库大小是多少?既然您在第一个垃圾收集器上使用了--aggressive
标志,那么当您尝试第二个垃圾收集器时,第一个gc进程是否仍在进行中?您可以结合使用git gc --force
和其他参数来立即运行gc,即使正在运行另一个垃圾回收。
-强制
即使此存储库上可能正在运行另一个git gc实例,也要强制运行git gc。