代码之家  ›  专栏  ›  技术社区  ›  Alexander Mills

git merge base--fork point<ref>未生成任何内容

  •  1
  • Alexander Mills  · 技术社区  · 6 年前

    我正在一个功能分支上运行此功能:

    git fetch origin
    git merge-base --fork-point origin/dev; echo $?
    

    这个 git merge-base 命令以1退出,但记录零stdout/stderr。

    我不明白为什么 merge-base 指挥部不会给裁判,有人知道为什么会这样?

    1 回复  |  直到 6 年前
        1
  •  2
  •   VonC    6 年前

    注意事项 torek 是其中的一部分 git merge-base discussion on fork-point mode .

             o---B2
            /
    ---o---o---B1--o---o---o---B (origin/master)
        \                   \
         B0                  D0'--D1'--D' (topic - updated)
          \
           D0---D1---D (topic - old)
    

    警告是 存储库中较旧的reflog条目可能在以下时间到期 git gc .
    如果 B0 不再出现在远程跟踪分支的重新记录中 origin/master , the --fork-point 模式显然找不到它并且失败了,避免给出随机的和无用的结果(例如b0的父级,就像没有 --叉点 选项给出)。

    也, 使用的远程跟踪分支 --叉点 模式必须是主题从其尖端分叉的模式。 .
    如果您从比提示更旧的提交分叉,则此模式将找不到分叉点(请想象在上面的示例历史中 B0 不存在, 起源/大师 开始于 B1 搬到 B2 然后 B 你把你的 topic origin/master^ 什么时候 起源/大师 地下一层 ;历史的形状与上面一样,没有 B0 以及 地下一层 是什么 git merge-base origin/master topic 正确的发现,但是 --叉点 模式不会,因为它不是以前处于 起源/大师 )

    您可以看到其他场景,其中 git merge-base --fork-point 不工作 in this thread .
    This patch series 说明当前文档。