有很多有用的 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
的完整列表,但手册确实涵盖了其中可用指针的完整列表,尽管它们很难找到。