跳至主要內容

Git HEAD

Mr.LRH大约 2 分钟

Git HEAD

HEAD 简介

HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交。当做分支切换的时候,HEAD 是会跟着切换的,指针就会指向新的分支,其最终会落脚到某一个 commit 上。

相对引用(^n / ~n)

  • (<commit> | HEAD)^n:指 HEAD 的第 n 个父提交(HEAD存在多个父提交的情况下)。如果 HEAD 存在 N 个父提交,那么 n < N
  • (<commit> | HEAD)~n:指的是 HEAD 的第n个祖先提交
  • (<commit> | HEAD)~n = (<commit> | HEAD)^^^...(^的个数为n)

示例:

  • HEAD^ 代表 “第一父提交”,也就是 “HEAD的父提交”。也可以使用 ~ ,同样指向父提交,HEAD^HEAD~ 是等价的。
  • HEAD~2 代表 “第一父提交的第一父提交”,也就是 “祖父提交” —— Git 会根据你指定的次数获取对应的第一父提交。
  • HEAD^^^ / HEAD~3,也是第一父提交的第一父提交的第一父提交

分离头指针(dastached HEAD)

HEAD 不仅仅可以指代当前分支的最后一次提交,还可以不与分支挂钩。在分离头指针的情况下,就指代到了具体的 commit 上。

分离头指针表示目前正工作在没有分支的状态下,即指向了某个具体的提交记录。

当在分离头指针的情况下,做了 commit 以及变更,如果后续再进行分支切换的时候,没有与分支挂钩的 commit 以及变更很有可能被 Git 当做垃圾给清除掉。

  • 如果需要做变更需要和某一个分支进行挂钩。
  • 如果只是做一些尝试性的变更,则可以使用到分离头指针,后续不需要这些变更,就可以使用 git checkout 切换分支即可。
上次编辑于:
贡献者: lingronghai