HEAD和HEAD~1有什么区别?

  • 本文关键字:HEAD 区别 git
  • 更新时间 :
  • 英文 :


建议我使用此命令将代码还原到Origin存储库中的方式:

git reset --soft HEAD~1

我在寻找有关此的信息,但没有找到任何解释的

HEAD~1

命令的〜1部分是什么?

此语法的官方文档在gitrevisions manpage中。

HEAD~1表示:使用第一个父母从 HEAD返回1个提交(大多数提交只有一个父母,因此该语法涵盖了大多数您想返回的情况)。

HEAD~1是如此普遍,也可以将其缩短为 HEAD~

不过,重要的是要了解HEAD与原点存储库的状态无关!在这些情况下,HEAD~1将恰好与原点的当前状态匹配:

  • 您刚从原点拉(合并),并创建了合并提交(提示合并提交消息)。
  • 您是最新的,然后在顶部进行了一个新的提交。

在其他情况下,您可能会使用@{upstream}来引用当前分支的上游(也记录在gitrevisions manpage中)。

最后,--soft通常也不是正确的选择。这意味着您的所有更改都将保存在工作树和索引中。您的文件根本不会更改,git status将显示所有更改为"要订立"。

如果您基本上想点击重置按钮,而则不可撤销地销毁所有人与上游相比,您所拥有的所有承诺和不承诺的更改,我建议这样做:

git reset --hard @{upstream}

最新更新