当 HEAD~ 在命令提示符下成功时,为什么 HEAD^ 失败?
Why is HEAD^ failing when HEAD~ is succeeding in command prompt?
我尝试运行以下命令:
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 目前只有一个父级。
编辑: 我忘记在命令提示符中指定我是 运行ning 了。事实上,这是问题所在,因为 ^
是命令提示符中的转义字符。
From this SO question,HEAD^
语义上表示当前HEAD的父级。如果 HEAD 是合并提交,则当前 HEAD 的父级可能不止一个。
从 Git Bash 开始,git checkout HEAD^
对我来说没有任何问题。我假设您是通过命令 shell 而不是 Bash 执行此操作的。在这种情况下,您可以尝试用双引号引起来,例如
git checkout "HEAD^"
我已经使用 Windows 提示测试了上面的内容,我得到了这个:
HEAD is now at 450db90... some commit message here
这意味着上面的检查将我们置于分离的 HEAD 状态,在分支的当前 HEAD 之前提交。如果你想 return 环顾四周后的原始分支,只需检查分支名称,例如
git checkout your_branch
我尝试运行以下命令:
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 目前只有一个父级。
编辑: 我忘记在命令提示符中指定我是 运行ning 了。事实上,这是问题所在,因为 ^
是命令提示符中的转义字符。
From this SO question,HEAD^
语义上表示当前HEAD的父级。如果 HEAD 是合并提交,则当前 HEAD 的父级可能不止一个。
从 Git Bash 开始,git checkout HEAD^
对我来说没有任何问题。我假设您是通过命令 shell 而不是 Bash 执行此操作的。在这种情况下,您可以尝试用双引号引起来,例如
git checkout "HEAD^"
我已经使用 Windows 提示测试了上面的内容,我得到了这个:
HEAD is now at 450db90... some commit message here
这意味着上面的检查将我们置于分离的 HEAD 状态,在分支的当前 HEAD 之前提交。如果你想 return 环顾四周后的原始分支,只需检查分支名称,例如
git checkout your_branch