git - HEAD、HEAD^ 和 HEAD~1 有什么区别?

标签 git

在git中,以下有什么区别?

  • 头^
  • HEAD~1
  • HEAD~2

它们与 master 有什么关系?那么有没有MASTER^, MASTER~1??

最佳答案

HEAD 是当前分支上最新提交的同义词,无论它是什么。

HEAD^(或HEAD^1)表示HEAD 的第一个父级。 merge 提交有多个父级,因此 HEAD^2 指的是 HEAD 的第二个直接父级,它参与了创建 的 merge >头

HEAD~1HEAD~ 相同。在这种情况下,它与 HEAD^ 同义。要查看差异,请考虑 HEAD~2HEAD 的祖 parent 。使用 ~ 可以追溯到几代人。

如果你刚好在master分支,那么HEAD就是master。如果您在分支 topic/foo 上,那么当您在该分支上时它指的是该分支。

大小写对 git 很重要。 MASTER^MASTER~1 很可能会产生如下形式的错误

fatal: ambiguous argument 'MASTER~1': unknown revision or path not
in the working tree.

但是 master^master~1 是有意义的。

参见 git rev-parse documentation有关您可以处理提交的许多方法的完整详细信息。

关于git - HEAD、HEAD^ 和 HEAD~1 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954566/

相关文章:

php - Travis CI 构建 PHP 项目并从 Composer 中提取依赖项,尝试使用 git@ 而不是 https

Git checkout 因分离的工作树而失败

git - 在 Git 提交期间禁用重命名检测以保留历史记录

mysql - Git:提交时导出MySQL数据库?

git - 如何取消删除已删除的远程分支

git - 我怎样才能修改以前的 git commit

linux - 回答 golang 中的密码 shell 提示

database - 如何将数据库置于 git(版本控制)之下?

git - 在两个单独的文件上运行 git merge 算法

git2svn 无法创建符号链接(symbolic link)(文件名太长)