我在(无分支)分支上做了一个提交,然后做了一个拉,意识到我在错误的分支上做了一个'结账大师'和另一个拉。我现在找不到我的原始提交推送主分支,我无法切换到(无分支)。有没有办法恢复我的提交或获得差异?
答案 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
<refname>@{<n>}, e.g. master@{1}
后跟后缀
@
的ref,括号对中包含序数规范(例如{1}
,{15}
)指定该ref的第n个先前值。
请注意,git rebase -i
也会这样做。
请务必注意
reflog
信息严格来说是本地的 - 这是您在存储库中完成的操作的日志。
其他人的存储库副本的引用不一样;在您最初克隆存储库之后,您将拥有一个空的reflog,因为您的存储库中尚未发生任何活动。
config gc.reflogExpire
指定何时删除早于此时间的reflog条目; 默认为90天。