【问题标题】:git merge with --no-commit as defaultgit 与 --no-commit 合并为默认值
【发布时间】:2022-01-07 00:52:15
【问题描述】:

我正在尝试将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 可以正常工作,但仍会自动提交。然后我搜索了尝试过的合并文档页面:

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 不可用,还有什么替代方法?

【问题讨论】:

  • 根据您在问题中链接到的答案,尝试将 false 更改为 no
  • @J.Titus 遗憾的是这不起作用:(
  • 我会设置一个别名:git config --global alias.mrg "merge --no-ff --no-commit"

标签: git merge config commit


【解决方案1】:

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

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

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

【讨论】:

  • 我真的很想知道他们在哪里提出了 merge.commit 选项...
  • @MarkSouls:我不确定这些究竟是如何产生的,但既然你可以git config 任何你喜欢的东西 (git config dutch.anteater aardvark) 并且没有任何抱怨,我可以看看有些人认为它必须意味着什么才能做到这一点。而且,当有人在挥舞时,他们可能会同时尝试几件事情,其中​​一件是真正有效的,并给人的印象是它是另一件有效的事情。
  • 我真正想知道的是user.password。 Git 本身没有也从未使用过这个,但也许 some 程序 did,就像您可以编写自己的程序来检查 dutch.anteater 配置变量一样。
  • 有道理,也许有第三方 gui 程序可以检查 merge.commit
猜你喜欢
  • 2011-07-28
  • 2011-12-07
  • 2012-03-24
  • 2014-01-17
  • 1970-01-01
  • 2013-05-25
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多