gpt4 book ai didi

git - 如何实现不允许的 `git --no-ff --ff-only`

转载 作者:IT王子 更新时间:2023-10-29 01:23:08 35 4
gpt4 key购买 nike

作为我们的 rebase-heavy 工作流程的一部分,我希望在 master 分支上使用 merge 。特别是,我只想在主题分支重新基于最近的主提交时才 merge ,从而使任何 merge 成为快进的 merge 。我可以通过使用:

git merge --ff-only

此外,我想记录主题分支与空提交的集成,这就是为什么我想使用 --no-ff 强制该行为的原因:

git merge --no-ff

不过,我真正想要的是两者的结合:仅在微不足道时 merge ,但无论如何让我记录下来。 Git 认为

致命:不能将 --no-ff 与 --ff-only 结合使用。

这对某些人来说似乎是不言而喻的。

git merge --edit --no-ff topicbranch

也没有实现我想要的行为。那么,如果相关主题分支重新基于最新的主提交,我该如何与 --no-ff 选项 merge ?


更新: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,因为您确实想要进行 --ff-only 会禁止的 merge 提交。

您想要的检查可以在运行 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
}

关于git - 如何实现不允许的 `git --no-ff --ff-only`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15631890/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com