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

Pat*_*uld 2 git version-control

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

Adr*_*ish 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
Run Code Online (Sandbox Code Playgroud)

来自git rev-parse:

<refname>@{<n>}, e.g. master@{1}
Run Code Online (Sandbox Code Playgroud)

一个REF后跟后缀@与封闭在一对括号(例如一个序规范{1},{15})指定ref的第n个先前值.

请注意,a git rebase -i会做同样的事情.

修正选择页提到:

重要的是要注意reflog信息是严格本地的 - 它是您在存储库中所做的事情的日志.
其他人的存储库副本的引用不一样; 在您最初克隆存储库之后,您将拥有一个空的reflog,因为您的存储库中尚未发生任何活动.

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