有很多有用的 git 引用(它的确切名称是什么?),例如HEAD, ORIG_HEAD, FETCH_HEAD, MERGE_HEAD, @{upstream} 等。
这有什么参考吗?带有解释的完整列表?
有很多有用的 git 引用(它的确切名称是什么?),例如HEAD, ORIG_HEAD, FETCH_HEAD, MERGE_HEAD, @{upstream} 等。
这有什么参考吗?带有解释的完整列表?
git help revisions调出http://git-scm.com/docs/gitrevisions,它描述了所有引用提交的最常见方法:
HEAD命名您基于工作树中的更改的提交。FETCH_HEAD记录您使用最后一次 git fetch 调用从远程存储库中获取的分支。ORIG_HEAD由HEAD以剧烈方式移动您的命令创建,以记录HEAD操作之前的位置,以便您可以轻松地将分支的尖端更改回运行它们之前的状态。MERGE_HEAD记录运行 git merge 时要合并到分支中的提交。CHERRY_PICK_HEAD记录您在运行 git cherry-pick 时挑选的提交。从 git 源代码中,您还可以找到有关BISECT_HEAD、REVERT_HEAD和REJECT_NON_FF_HEAD其他一些您几乎肯定永远不需要的信息。
该参考资料还解释了后缀 ( ^N, ~N, @{...})、范围 ( ..vs ...) 等。
HEAD:您正在查看的当前参考。在大多数情况下,它可能是refs/heads/master
FETCH_HEAD: 上次更新的分支/远程头的 SHAgit fetch
ORIG_HEAD:进行合并时,这是您要合并到的分支的 SHA。
MERGE_HEAD:进行合并时,这是您要合并的分支的 SHA。
CHERRY_PICK_HEAD:在进行挑选时,这是您挑选的提交的 SHA。
可以通过克隆 git 源找到这些 ref 的完整列表:
git clone https://github.com/git/git.git
并 grepping 文件中的_HEAD"字符串.c。它们分散在各处,但仍然很容易找到。
附言
git help revisions不显示所有可能的命名参考列表。
这是Git 修订版的官方 Linux Kernel Git 文档所说的:
HEAD命名您基于工作树中的更改的提交。
FETCH_HEAD记录您使用最后一次 git fetch 调用从远程存储库中获取的分支。
ORIG_HEAD由HEAD以剧烈方式移动您的命令创建,以记录HEAD其操作之前的位置,以便您可以轻松地将分支的尖端更改回运行它们之前的状态。
MERGE_HEAD记录运行 git merge 时要合并到分支中的提交。
CHERRY_PICK_HEAD记录您在运行 git cherry-pick 时挑选的提交。
此外,对于@{upstream}:
<refname>@{upstream},例如master@{upstream},@{u}ref的后缀
@{upstream}(简称<refname>@{u})指的是 ref 设置为在其上构建的分支。缺少的 ref 默认为当前分支。
这些引用称为指针。它们只是程序员术语中的常规指针,指向存在于 Git 中的树状实体。请注意,tree-ish 是由至少一个提交组成的任何内容,即分支、标记、存储或类似HEAD. 关于完整列表,我认为唯一存在的是手册:
http://git-scm.com/documentation
虽然没有可用的特殊指针HEAD的完整列表,但手册确实涵盖了其中可用指针的完整列表,尽管它们很难找到。