git - 为什么 HEAD^ 在命令提示符下成功而 HEAD~ 失败?

标签 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~

checkout 成功,没有任何问题。

我确实确认 HEAD 目前只有一个父级。

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

最佳答案

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

在 Git Bash 中,git checkout HEAD^ 对我来说没有任何问题。我假设您是从命令 shell 执行此操作,而不是 Bash。在这种情况下,您可以尝试用双引号括起来,例如

git checkout "HEAD^"

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

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

这意味着上面的检查使我们进入分离的 HEAD 状态,即在分支的当前 HEAD 之前提交一次。如果你想在查看后返回原始分支,只需检查分支名称,例如

git checkout your_branch

关于git - 为什么 HEAD^ 在命令提示符下成功而 HEAD~ 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176140/

相关文章:

git - 为什么 Youtrack 不通过提交消息关闭问题?

git - 如何强制 Jenkins 重建分支?

java - 您的项目包含错误,请在运行之前修复它们 :Eclipse

git - 如何在 git 存储库中获取旧版本文件的副本?

git - 今天保持 git 子模块 checkout 与提交 ID 同步的策略?

git checkout 用于开发/登台/生产的分支

git - 如何使用 git rebase merge 提交

git - 在 Jenkins 电子邮件通知中获取多行提交消息

Git:pathspec 'path' 与 git 已知的任何文件都不匹配

git checkout 上一条