Git reflog过期时间

时间:2018-10-10 14:58:47

标签: git

我知道reflog条目会被删除超过90天。我对此也没有对git config进行任何更改。 今天,当我做git reflog master --date=local时,可以看到10个月前的条目。怎么可能?我应该只看到可追溯到3个月之前的条目?

2 个答案:

答案 0 :(得分:2)

只要您不禁用它,Git就会自动定期运行git gc。但是,此自动GC的期间并未在任何地方定义,实际上,它根本不是基于时间的。相反,它基于git gc --auto对存储库状态进行的快速调查。此外,它实际上是通过运行其他一些Git命令开始的,该命令在工作结束时仅运行git gc --auto。然后,该git gc --auto决定是否运行git gc,如果是,则该git gc运行git reflog expire并终止90天。

在这种情况下,也许您有10个月没有运行运行git gc --auto的Git命令,或者git gc --auto选择不执行任何操作。这似乎有点过分, 1 ,所以更有可能通过将gc.auto设置为0来禁用自动GC。您也有可能遇到了一个有趣的错误:请参见下面的“另请参见”问题之一,请参见this answer by VonC,该问题已解决了一个会咬人的错误。

另请参见List of all commands that cause git gc --autoUnderstanding git gc --autoHow often should you use git-gc?


1 这到底有多大取决于存储库的活跃程度。一个相当安静的存储库可能不会积累足够多的松散对象,以使git gc --auto不能进行许多个月的操作;繁忙的人会经常需要自动gc。

答案 1 :(得分:1)

  

那怎么可能?

非常简单的解释-如果您不定期运行git reflog expiregit gc,这是可能的。如果您这样做了并且他们仍然在那,请修正您的问题。否则,就是这样。

键入git gc并看到它们消失。