当HEAD〜在命令提示符下成功执行时,为什么HEAD ^失败?

时间:2018-09-05 02:11:02

标签: git git-checkout

我尝试运行以下命令:

git checkout HEAD^

我得到了输出

More? (I press Enter)
More? (I press Enter)
error: pathspec 'HEAD
' did not match any file(s) known to git.

这是什么意思?如果我改为运行以下命令:

git checkout HEAD~

结帐成功,没有任何问题。

我确实确认HEAD当前只有一位父母。

编辑:我忘记指定要在命令提示符中运行它。实际上,这是一个问题,因为^是命令提示符中的转义字符。

1 个答案:

答案 0 :(得分:2)

From this SO questionHEAD^在语义上表示当前HEAD的父代。如果HEAD是合并提交,则当前HEAD可能有多个父级。

git checkout HEAD^在Git Bash上为我工作,没有任何问题。我假设您是从命令外壳而不是Bash执行此操作。在这种情况下,您可以尝试使用双引号将其换行,例如

git checkout "HEAD^"

我已经使用Windows提示符测试了以上内容,并且得到了以下提示:

HEAD is now at 450db90... some commit message here

这意味着上面的检查使我们进入了分离的HEAD状态,即在分支的当前HEAD之前的一个提交。如果您想在环顾四周后返回原始分支,只需签出分支名称,例如

git checkout your_branch