Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 当HEAD~在命令提示符下成功时,为什么HEAD^失败?_Git_Git Checkout - Fatal编程技术网

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

Git 当HEAD~在命令提示符下成功时,为什么HEAD^失败?,git,git-checkout,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目前只有一位家长 编辑:我忘了在命令提示符下指定我正在运行此命令。事实上,这就是问题所在,因为^

我尝试运行以下命令:

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目前只有一位家长

编辑:我忘了在命令提示符下指定我正在运行此命令。事实上,这就是问题所在,因为
^
是命令提示符中的转义字符。

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

在Git Bash中,
Git checkout HEAD^
为我工作,没有任何问题。我假设您是从命令shell而不是Bash执行此操作的。在这种情况下,您可以尝试使用双引号包装,例如

git checkout "HEAD^"
我已经使用Windows提示符测试了上述内容,得到了以下结果:

HEAD is now at 450db90... some commit message here
这意味着上述签出将我们置于分离的头状态,即在分支的当前头之前提交一次。如果您想在环顾四周后返回原始分支,只需签出分支名称,例如

git checkout your_branch

HEAD^
表示头部的父项。我从未尝试过这样做,所以我不知道如何解释Git给你的反馈。你在Windows上吗?我认为
^
对Windows Shell来说意味着一些特殊的东西。@TimBiegeleisen是的,我试图回到过去。原来问题是因为霍布斯指出,
^
是命令提示符上的转义字符。@tripleee可能重复。在将其标记为重复之前,您是否阅读了这两个问题的内容?提出的实际问题和收到的错误完全不同,它们甚至不是在谈论同一个shell。另外,这个问题的公认答案与这个问题的解决方案相去甚远。我应该补充说,
git checkout HEAD^ ^
也是一个解决方案,但它可能会很快变得非常混乱。请详细说明行末的sole
^
为什么不能在
cmd.exe
中工作。我的意思是,你提出了一个解决方案,这很好,但首先需要解释为什么需要它。