作为我们的rebase-heavy工作流程的一部分,我希望在master分支上使用合并.特别是我想只在主题分支被重新定位到最近的主提交时合并,从而使任何合并成为快进合并.我可以通过使用:
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!"'
Run Code Online (Sandbox Code Playgroud)
有点满口但有效.请注意使用选项编辑提交消息的强制--edit.
CB *_*ley 10
你不想要,--ff-only因为你确实想要进行一个--ff-only会抑制的合并提交.
在运行merge命令之前,可以将所需的检查作为单独的检查.您可以将其打包成一个简单的shell函数.
例如
merge_if_ahead () {
if test "$(git merge-base HEAD "$1")" = "$(git rev-parse HEAD)"; then
git merge --no-ff "$1"
else
echo >&2 "Not up to date; refusing to merge"
return 1
fi
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |