【问题标题】:ORIG_HEAD, FETCH_HEAD, MERGE_HEAD etcORIG_HEAD、FETCH_HEAD、MERGE_HEAD 等
【发布时间】:2013-07-09 20:26:20
【问题描述】:

有很多有用的 git 参考资料(它的确切名称是什么?),例如HEADORIG_HEADFETCH_HEADMERGE_HEAD、@{upstream} 等

这有什么参考吗?完整的列表和解释?

【问题讨论】:

标签: git


【解决方案1】:

git help revisions 提出了http://git-scm.com/docs/gitrevisions,它描述了所有最常见的引用提交的方式:

  • HEAD 命名您在工作树中进行更改的提交。
  • FETCH_HEAD 记录了您上次调用 git fetch 从远程存储库中获取的分支。
  • ORIG_HEAD 是由命令创建的.
  • MERGE_HEAD 记录您在运行 git merge 时合并到分支中的提交。
  • CHERRY_PICK_HEAD 记录你在运行 git cherry-pick 时挑选的提交。

从 git 源中,您还可以找到有关 BISECT_HEADREVERT_HEADREJECT_NON_FF_HEAD 和其他几个您几乎肯定永远不需要的信息。

该参考资料还解释了后缀(^N~N@{...})、范围(.....)等。

【讨论】:

    【解决方案2】:

    official Linux Kernel Git documentation for Git revisions 是这么说的:

    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}

    引用的后缀@{upstream}(缩写形式<refname>@{u})指的是引用设置为在其上构建的分支。缺少的 ref 默认为当前分支。

    【讨论】:

      【解决方案3】:

      HEAD: 你正在查看的当前 ref。大多数情况下可能是refs/heads/master

      FETCH_HEAD: 上次git fetch更新的分支/远程头的SHAs

      ORIG_HEAD:在进行合并时,这是您要合并到的分支的 SHA。

      MERGE_HEAD:在进行合并时,这是您要合并的分支的 SHA。

      CHERRY_PICK_HEAD: 在进行挑选时,这是你挑选的提交的 SHA。

      可以通过克隆 git 源找到这些 ref 的完整列表:

      git clone https://github.com/git/git.git

      并在.c 文件中查找_HEAD" 字符串。它们分散在各处,但仍然很容易找到。

      附言

      git help revisions 不显示所有可能的命名参考列表。

      【讨论】:

        【解决方案4】:

        这些引用称为指针。它们只是程序员术语中的常规指针,指向存在于 Git 中的树状实体。请注意,tree-ish 是由至少一个提交组成的任何东西,即分支、标记、存储或类似 HEAD 的东西。关于完整列表,我认为唯一存在的就是手册:

        http://git-scm.com/documentation

        虽然没有像HEAD 这样的可用特殊指针的完整列表,但该手册确实涵盖了其中可用指针的完整列表,尽管它们很难找到。

        【讨论】:

          猜你喜欢
          • 2013-08-03
          • 2014-01-04
          • 2010-11-01
          相关资源
          最近更新 更多