git merge-base --fork-point <ref>没有任何结果

时间:2018-09-25 19:28:09

标签: git git-merge

我正在功能分支上运行它:

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

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

我不知道为什么merge-base命令不会产生引用,有人知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:2)

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的引用日志中,则--fork-point模式显然找不到并失败,从而避免给出随机且无用的结果(例如B0的父级,就像没有--fork-point选项的相同命令给出的一样。)

     

此外,您使用--fork-point模式的远程跟踪分支必须是您的主题从其提示中分叉的分支。
  如果您从比提示更早的提交进行分叉,则此模式将找不到分叉点(上述示例历史记录B0中不存在,origin/masterB1开始,移至B2,然后B,当topicorigin/master^时,您在origin/master分叉了B1;历史的形状是相同的如上,没有B0B1的父元素是git merge-base origin/master topic正确找到的东西,但是--fork-point模式不会,因为它不是使用的提交之一放在origin/master的顶端)。

您还会看到git merge-base --fork-point不起作用in this thread的其他情况。
This patch series说明了当前文档。