这不是如何恢复Github中丢失分支的问题,而是通过以下用户案例故事恢复已删除分支的时间:
在拉取请求(通常用作代码审查的地方)内,可以在github GUI中合并然后删除分支。如果您选择删除它,您将获得带有加粗和带下划线的单词的选项,以“恢复”分支。
我怀疑这个选项有一个时间限制,并且github无法无限期地保留它。
github是否有时间限制你能做多久?如果是的话,那个时间限制是什么?
答案 0 :(得分:30)
我问GitHub Support,这是他们的反应(强调我的):
我们为所有Pull请求使用单独的ref命名空间,我们将其用于各种事情,包括恢复分支。由于我们无限期地保留[Pull Request]引用, 恢复分支没有时间限制 。
您可以使用以下方法在遥控器中查看这些特殊参考:
$ git ls-remote | grep pull
From git@github.com:<username>/<remote>.git
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa refs/pull/1/head
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb refs/pull/1/merge
cccccccccccccccccccccccccccccccccccccccc refs/pull/2/head
dddddddddddddddddddddddddddddddddddddddd refs/pull/2/merge
引用在refs/pull/<pull request number>/
下命名。被请求的分支顶端的head
引用点,即分支上的最后一次提交。我不确定merge
引用是什么。
答案 1 :(得分:3)
GitHub支持会有明确的答案,但我怀疑它是基于自动清除the reflog
之前的默认90天时间。
gc.<pattern>.reflogexpire
git reflog
到期会删除比此时更早的reflog
个条目; 默认为90天 使用&#34;<pattern>
&#34; (例如&#34;refs/stash
&#34;)中间设置仅适用于与<pattern>
匹配的引用。
但是......我有一个本地副本,该分支仍在其中声明...没有什么会阻止你将所述分支推回到gitHub仓库;)
Cupcake answer(upvoted)给予支持答案:无限制,这意味着那两个settings are both set to never
:
gc.reflogexpire
gc.reflogexpireunreachable
这对于托管回购服务是有意义的,它不会在本地修改这些回购,只存储从外部贡献者推送的修改。
更新Git 2.22(2019年第二季度,五年后):最后一种情况(设置gc.reflogexpire
和gc.reflogexpireunreachable
至never
)得到更好的处理。
请参阅commit bf3d70f,commit 978f430(2019年3月28日),commit fe66776,commit a65bf78,commit cd8eb3a,commit e5cdbd5(2019年3月15日),和commit 8bf1444(2019年3月13日)Ævar Arnfjörð Bjarmason (avar
)
(Junio C Hamano -- gitster
--合并于commit f3c19f8,2019年4月25日)
gc
:处理&amp;检查gc.reflogExpire
config不要冗余地运行&#34;
git reflog expire --all
&#34;当gc.reflogExpire
和gc.reflogExpireUnreachable
设置为&#34;never
&#34;时,立即死亡 如果那些配置评估者不好。作为早期&#34;声称缺乏提前退出&#34;更改为&#34;
git reflog expire
&#34;的测试显示,gc.reflogExpire{Unreachable,}
的早期检查 对于&#34;git reflog expire
&#34;一般不需要,但它是有道理的 for&#34;gc
&#34;这是因为:
与8ab5aa4类似(&#34;
parseopt
:更好地处理格式错误的--expire
个参数&#34;,2018-04-21,Git v2.18.0-rc0如果配置变量设置为无效值,我们现在会提前死亡 我们运行&#34;pack-refs
&#34;在&#34;reflog expire
&#34;之前,这可能需要一段时间,然后才会在无效的gc.reflogExpire{Unreachable,}
配置上死亡。根本不调用该命令它不会显示在轨道输出中,这使得当两者设置为&#34; {{1}时,它会更加明显}&#34;
- 醇>
作为后来的更改文档,我们会在循环refs到期时锁定引用,即使在我们因为此配置而无法执行任何操作的情况下。
答案 2 :(得分:3)
请注意,即使引用安全存储as described by Cupcake,GitHub 上的某些拉取请求页面也不会显示删除/恢复分支按钮。
这可能意味着在后来的拉取请求中再次使用了相同的分支。在repo(在GitHub中)中搜索分支名称并检查该分支上的最新拉取请求。你应该找到用于恢复(或删除)那里的分支的UI。