作为我们频繁变基的工作流的一部分,我希望在主分支上使用合并。特别是当主题分支已经变基到最新的主提交时,我想仅合并此时任何合并都是快进式的。我可以通过使用以下命令来实现:
更新:看起来Charles Bailey的答案会解决问题。如果您希望将其合并为一个git别名,可以使用此处发布的内容:
git merge --ff-only
此外,我想记录主题分支与空提交的集成,这就是我想使用--no-ff的原因,因为它强制执行了这种行为:
git merge --no-ff
不过,我真正想要的是两者的结合:仅在情况简单时合并,但仍然让我记录它。Git认为:
fatal: You cannot combine --no-ff with --ff-only.
这似乎对某些人来说是显而易见的。
git merge --edit --no-ff topicbranch
也无法实现我想要的行为。那么,如果涉及的主题分支已经变基到最新的主提交,我该如何使用--no-ff选项进行合并?更新:看起来Charles Bailey的答案会解决问题。如果您希望将其合并为一个git别名,可以使用此处发布的内容:
git config --global alias.integrate '!test "$(git merge-base HEAD "$1")" = "$(git rev-parse HEAD)" && git merge --no-ff --edit $1 || echo >&2 "Not up-to-date; refusing to merge, rebase first!"'
有点啰嗦但是行得通。请注意使用选项--edit
编辑提交信息的影响力。
--ff-only
,因为你确实想要创建一个合并提交。你可以将此检查作为单独的步骤执行:例如,test $(git merge-base HEAD topicbranch) = $(git rev-parse HEAD) && git merge --no-ff topicbranch
。 - CB Bailey