如何验证GIT分支是否可以在没有实际合并的情况下快进合并?

时间:2016-12-23 06:25:42

标签: git merge

我试图找到GIT命令与仅快进选项合并并自动创建合并提交但是--ff-only不创建自动提交。

由于我想确保我只能快进,并在合并后也创建提交。

不幸的是,这些命令无法帮助我克服这个问题。   - --ff-only,快进合并但不创建提交   - --no-ff,创建自动提交但不能停止合并,如果它不能快速应用。

因此,我试图找到任何可以验证它是否可以快进合并然后与自动提交合并的命令。

请给我一些建议。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

如果当前分支中没有尚未在另一个分支中的修订,则从其他分支合并将导致快进。一种检查方法:

git rev-list other..

请注意..在其他分支的名称之后,这很重要。

如果输出为空,则此分支中没有提交不在other中,git merge other将导致快进。

或者,正如@torek在评论中写的,对于shell脚本测试,请使用git merge-base --is-ancestor的状态结果:

if git merge-base --is-ancestor HEAD foo; then
    echo merging foo can be done by advancing to foo without a merge
else
    echo merging foo would require a merge commit
fi

答案 1 :(得分:1)

如果您只想快进合并,而执行想要合并提交,那么以下似乎可行,即使它听起来有些可笑:

git merge [branch] --ff-only --no-ff

它的工作原理是--no-ff实际上意味着"即使合并解析为快进,也会创建合并提交。"它并不代表"不执行快进。"