恢复git提交到(没有分支)

时间:2012-09-05 03:53:49

标签: git version-control

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

1 个答案:

答案 0 :(得分:5)

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个先前值。

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

Revision Selection页提及:

  

请务必注意reflog信息严格来说是本地的 - 这是您在存储库中完成的操作的日志。
  其他人的存储库副本的引用不一样;在您最初克隆存储库之后,您将拥有一个空的reflog,因为您的存储库中尚未发生任何活动。

config gc.reflogExpire指定何时删除早于此时间的reflog条目; 默认为90天