Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';我的git reflog不能返回克隆吗_Git_Git Reflog_Reflog - Fatal编程技术网

为什么';我的git reflog不能返回克隆吗

为什么';我的git reflog不能返回克隆吗,git,git-reflog,reflog,Git,Git Reflog,Reflog,我有一个关于git reflog的问题: 在我的项目开始时,当我执行git reflog时,我能够看到我最初的git clone命令的所有步骤 今天,git reflog不再返回git clone命令 更准确地说,git reflog返回4143行,最后一行被截断: $ git reflog 6146d34 HEAD@{0}: checkout: moving from feature/cluster to feature/config [...] cb14a86 HEAD@{4140}: ch

我有一个关于git reflog的问题:

在我的项目开始时,当我执行git reflog时,我能够看到我最初的git clone命令的所有步骤

今天,git reflog不再返回git clone命令

更准确地说,git reflog返回4143行,最后一行被截断:

$ git reflog
6146d34 HEAD@{0}: checkout: moving from feature/cluster to feature/config
[...]
cb14a86 HEAD@{4140}: checkout: moving from master to demo/20170529
b2ef8d6 HEAD@{4141}: checkout: moving from master to demo/20170529
b2ef8d6 
$ 
谁能解释一下原因吗

有没有办法获取整个reflog

非常感谢


朱利安

@TimBiegeleisen说得对,reflog会定期清空。只要reflog保存对其他不可访问的提交的引用,它们仍然会留在您的存储库中。只有当从reflog('expired')中删除提交引用时,提交才会被垃圾收集,因此会完全消失。如果不发生这种情况,则来自已删除分支的提交将永远存在

由于此类“悬空”提交和其他未使用的引用已从您的存储库中删除,并且没有记录存储库的本地历史记录,因此您无法追溯获取存储库的整个reflog

编辑:找到:

reflog会一直保留到过期(这可以通过git reflog完成) 过期命令)。不可访问提交的默认值为30天(或 gc.reflogExpireUnreachable配置值)或,对于reachable 提交,90天(或gc.reflogExpire配置值)


这会得到确认,正如您在示例中所看到的,您还可以将
reflogExpire=never
设置为永不让可访问的reflog条目过期。然而,这并不能使已经删减的重登录恢复,只能防止将来删除。

正如其他人所指出的,重登录在设计上是临时的。我想补充一点:

您可以调整影响reflog条目保留时间的配置设置,但即使如此,您也应将其视为临时设置,因为reflog严格是本地的,也就是说,它们不会在推送时转到远程(或在获取/拉取时来自远程),而是只跟踪本地克隆上ref的历史记录。因此,如果您必须更换本地回购协议,那么无论配置如何设置,您都将丢失所有的重登录

更新回复评论中的后续问题:相关设置(记录在此处:)如下:

gc.reflogExpire
gc..reflogExpire
gc.reflogExpireUnreachable
gc..refrogexpireunreable

它不希望人们在问题的开头随意打招呼。关于你的实际问题,我的理解是(可能有缺陷)可以定期清除reflog。换句话说,如果你不小心核了一堆提交,你会发现它们在reflog中是安全可靠的,但它们可能会在以后某个时候被垃圾收集。这不是一个完整的答案,我也找不到任何文档,但您不应该依赖reflog作为您所做的每一次提交的永久记录。您能提供相应的设置吗?Thx!
gc.reflogExpire
gc.<pattern>.reflogExpire
gc.reflogExpireUnreachable
gc.<pattern>.reflogExpireUnreachable