有很多有用的git引用(这个的确切名称是什么?),例如HEAD
,ORIG_HEAD
,FETCH_HEAD
,MERGE_HEAD
,@ {upstream}等。
有没有参考?包含解释的完整列表?
答案 0 :(得分:36)
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 ...
)等。
答案 1 :(得分:21)
HEAD
:您正在查看的当前裁判。在大多数情况下,它可能是refs/heads/master
FETCH_HEAD
:在上次git fetch
ORIG_HEAD
:进行合并时,这是您要合并的分支的SHA。
MERGE_HEAD
:进行合并时,这是您要合并的分支的SHA。
CHERRY_PICK_HEAD
:做樱桃选择时,这是你正在挑选的提交的SHA。
可以通过克隆git来源找到这些引用的完整列表:
git clone https://github.com/git/git.git
并在_HEAD"
个文件中点击.c
字符串。它们散布在各处,但仍然很容易找到。
<强> P.S。强>
git help revisions
未显示所有可能的命名引用列表。
答案 2 :(得分:5)
这是official Linux Kernel Git documentation for Git revisions所说的:
HEAD
命名您在工作树中基于更改的提交。
FETCH_HEAD
记录您使用上次git fetch调用从远程存储库中获取的分支。运行git merge时,
ORIG_HEAD
是通过命令创建的,这些命令会以极大的方式移动HEAD
,以便在操作前记录HEAD
的位置,以便您可以轻松更改在你运行它们之前回到状态。
MERGE_HEAD
会记录您正在合并到分支中的提交。
CHERRY_PICK_HEAD
记录了当你运行git cherry-pick时你正在挑选的提交。
另外,@{upstream}
:
<refname>@{upstream}
,例如master@{upstream}
,@{u}
ref的后缀
@{upstream}
(简短形式<refname>@{u}
)指的是ref设置在其上的分支。缺少的参数默认为当前分支。
答案 3 :(得分:0)
这些引用称为指针。对于Git中存在的树形实体,它们只是程序员术语中的常规指针。请注意,tree-ish是由至少一个提交组成的任何内容,即分支,标记,存储或类似HEAD
的内容。关于完整列表,我认为唯一存在的是手册:
http://git-scm.com/documentation
虽然没有像HEAD
这样的可用特殊指针的完整列表,但手册确实涵盖了其中可用指针的完整列表,尽管它们很难找到。