git 默认与 --no-commit 合并

git merge with --no-commit as default

我正在尝试将 git merge --no-ff --no-commit 设置为合并的默认行为。

现在我已经阅读了以下问题:

How do I make git merge's default be --no-ff --no-commit?

Git: Default "no commit" merge behaviour for all branches?

根据这些答案,我在全局配置中添加了以下内容:

[merge]
    tool = winmerge
    ff = false
    commit = false

添加新配置后 --no-ff 工作正常,但它仍然自动提交。然后我搜索了 tried merge-documentation 页面:

https://git-scm.com/docs/merge-config/2.18.0

有 merge.ff 个条目但没有 merge.commit。我目前正在使用 git 版本 2.29.2.windows.2.

我在本地配置合并选项中添加了 --no-commit 作为解决方法:

[branch "master"]
    mergeoptions = --no-commit

它现在可以工作,但我希望我的电脑上的所有项目和分支都默认该行为。

所以我的问题如下:

  1. merge.commit配置真的存在吗?如果是版本问题,哪个版本允许?
  2. 如果 merge.commit 不可用,替代方案是什么?

没有 merge.commit 选项:请参阅 the source code,您可以在其中查看处理了哪些选项,并观察是否缺少 merge.commit 选项。 2014 年也没有这样的选项(如果你愿意,可以克隆并检查 Git 源来验证这一点)。

merge.ff 选项从那时起就存在了,但据我所知,merge.commit 从未存在过。当然,您可以 运行 一个不同于 git merge 的命令来开始合并,通过这样做,您可以使该命令提供 --no-commit 作为显式参数。但是请注意,您不能为内置函数 Git 添加别名,因此无法创建一个 Git 别名来插入 --no-commit 运行git merge。 运行 git mymerge 并将其设为 Git 别名,或 运行 mymerge 并将其设为 shell 别名,但不要 运行 git merge.

(您的另一个选择当然是为每个分支名称设置 branch.<em>name</em>.mergeoptions。)