我正在功能分支上运行它:
git fetch origin
git merge-base --fork-point origin/dev; echo $?
git merge-base
命令以1退出,但记录为零stdout / stderr。
我不知道为什么merge-base
命令不会产生引用,有人知道为什么会发生这种情况吗?
答案 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/master
从B1
开始,移至B2
,然后B
,当topic
为origin/master^
时,您在origin/master
分叉了B1
;历史的形状是相同的如上,没有B0
,B1
的父元素是git merge-base origin/master topic
正确找到的东西,但是--fork-point
模式不会,因为它不是使用的提交之一放在origin/master
的顶端)。
您还会看到git merge-base --fork-point
不起作用in this thread的其他情况。
This patch series说明了当前文档。