为什么 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目前只有一个父母。

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

从这个 SO 问题来看,HEAD^语义上表示当前 HEAD 的父级。 如果 HEAD 是合并提交,则当前 HEAD 可能有多个父级。

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

git checkout "HEAD^"

我已经使用 Windows 提示符测试了上述内容,我得到了这个:

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

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

git checkout your_branch

最新更新