我在(no branch)分支上提交了代码,然后进行了一次pull操作。接着我意识到我在错误的分支上,于是使用了'checkout master'命令并再次进行了一次pull操作。现在我找不到原来提交的代码以便将其推送到主分支,并且也无法切换到(no branch)分支。有没有办法让我找回我的代码或获取差异文件?
我在(no branch)分支上提交了代码,然后进行了一次pull操作。接着我意识到我在错误的分支上,于是使用了'checkout master'命令并再次进行了一次pull操作。现在我找不到原来提交的代码以便将其推送到主分支,并且也无法切换到(no branch)分支。有没有办法让我找回我的代码或获取差异文件?
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。gc.reflogExpire
指定何时删除早于此时间的 reflog 条目;默认为 90 天。
git reflog
显示了提交记录 - 你可以将其拉取到一个真正的分支中吗? - Adrian Cornish