尝试(未测试)
git checkout HEAD@{1}
将代码库“切换回之前的HEAD
”,就像你执行checkout xxx
命令之前一样。
另请参阅 "Git中的HEAD
和ORIG_HEAD
"
所有其他的修订规范都在这里:rev_parse,“SPECIFYING REVISIONS”部分。
例如,要返回到以前的分支,可以尝试@{-1}
。
刚刚测试了一下(“以前的HEAD
”选项):
简单的git仓库,有三个文件,分别在三个提交中添加(a
,然后b
,然后c
):
C:\git\tests\p3>git log --oneline
6e5b961 c
66c68e3 b
77e9a40 a
我检出了第一个提交(DETACHED HEAD
)
C:\git\tests\p3>git checkout 77e9a40
Note: moving to '77e9a40' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 77e9a40... a
C:git\tests\p3>dir
08/12/2010 12:27 PM 4 a.txt
我试图在进行“DETACHED HEAD”之前返回到先前的HEAD
:
C:\git\tests\p3>git checkout HEAD@{1}
Previous HEAD position was 77e9a40... a
HEAD is now at 6e5b961... c
它有效!
你得到了正确的提交,但不是正确的分支(即你仍处于分离模式)
C:\git\tests\p3>git branch
* (no branch)
master
在这种配置下,试图返回到以前的分支是行不通的
C:\git\tests\p3>git checkout HEAD@{-1}
error: pathspec 'HEAD@{-1}' did not match any file(s) known to git.
所以唯一真正的解决方案是先记住 HEAD(而不是在分离模式下提交),然后返回。
git symbolic-ref HEA
请参考Jefromi的回答。