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
中工作。我的意思是,你提出了一个解决方案,这很好,但首先需要解释为什么需要它。