3

我在(无分支)分支上进行了提交,然后进行了拉动,意识到我在错误的分支上并进行了“结帐大师”和另一个拉动。我现在找不到要推送到主分支的原始提交,也无法切换到(无分支)。有没有办法恢复我的提交或获得差异?

4

1 回答 1

6

将为您列出您所做的git reflog所有提交,并且(例如)git merge HEAD@{1}将其合并回您的分支。

$ git reflog
734713b... HEAD@{0}: commit: fixed refs handling, added gc auto, updated
d921970... HEAD@{1}: merge phedders/rdocs: Merge made by recursive.
1c002dd... HEAD@{2}: commit: added some blame and merge stuff

来自git rev-parse

<refname>@{<n>}, e.g. master@{1}

一个 ref 后跟@一个包含在大括号对(例如{1}, {15})中的序号规范的后缀,指定该 ref 的第 n 个先前值。

请注意, agit rebase -i也会这样做。

修订选择页面提到:

重要的是要注意这些reflog信息是严格本地的——它是您在存储库中所做的事情的日志。
其他人的存储库副本上的引用不会相同;在您最初克隆存储库后,您将有一个空的 reflog,因为您的存储库中还没有发生任何活动。

配置gc.reflogExpire指定何时删除比此时间更早的 reflog 条目;默认为 90 天

于 2012-09-05T04:20:15.767 回答