ORIG_HEAD,FETCH_HEAD,MERGE_HEAD等

时间:2013-07-11 14:03:53

标签: git

有很多有用的git引用(这个的确切名称是什么?),例如HEADORIG_HEADFETCH_HEADMERGE_HEAD,@ {upstream}等。

有没有参考?包含解释的完整列表?

4 个答案:

答案 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_HEADREVERT_HEADREJECT_NON_FF_HEAD以及其他几个您几乎肯定不需要的内容。

该引用还解释了后缀(^N~N@{...}),范围(.. vs ...)等。

答案 1 :(得分:21)

HEAD:您正在查看的当前裁判。在大多数情况下,它可能是refs/heads/master

FETCH_HEAD:在上次git fetch

期间更新的分支/远程负责人的SHA

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调用从远程存储库中获取的分支。

     

ORIG_HEAD是通过命令创建的,这些命令会以极大的方式移动HEAD,以便在操作前记录HEAD的位置,以便您可以轻松更改在你运行它们之前回到状态。

     运行git merge时,

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