为什么Git要求输入合并信息?

3
当我执行git merge时,会打开一个编辑器,预定义的消息“Branch merged to ”会被打印出来,我只需要保存文件并退出即可。以前它不会要求我输入任何内容,也不会打开文件。这个在哪里可以配置?

完全停止使用合并,改用交互式变基与压缩,这样更加高效。 - Waterlink
4个回答

7
答案是因为Git和Linux内核社区认为默认行为(无需为合并输入消息)很糟糕,因为人们未能提供合并工作的摘要。因此,Linus指出,他认为合并消息不需要编辑器是一个设计错误。维护者同意并更改了行为。Linus在Google Plus上有一篇关于此的帖子here,Git邮件列表上的讨论在这里。Git的维护者Junio也在这里谈到了它。
正如其他人所指出的那样,您可以在命令行上传递--no-edit。一个较少被人知道的事实是,您可以设置GIT_MERGE_AUTOEDIT=no,并防止git merge弹出编辑器。它旨在用于非交互式脚本,但也可能被滥用。:-)

2

在标志中加入--no-edit,以防止被要求输入合并消息。


这个标志只影响没有冲突的合并吗?有没有可能在git配置中设置它? - dhblah
我看到了有关git合并的文档:https://www.kernel.org/pub/software/scm/git/docs/git-merge.html,上面说通常不建议使用自动生成的消息,为什么?而且Windows上的git使用了这种不被推荐的做法。我不明白。 - dhblah

1
合并是一次提交。因此,您应该输入提交说明。

之前它没有要求我输入任何内容,也没有打开文件。 - edem
@edem 这太局限于具体情况了,很难说清楚为什么会这样。 - Zaffy
@Zaffy,这只是在Windows版本的Git中没有询问,但我手动为Cygwin构建了Git,它开始询问了。 - dhblah
@dhblah 也许Windows版本会在您不知情的情况下自动提交它? - Zaffy

1

来自 man git-merge 的 "CONFIGURATION" 部分如下:

merge.log 除分支名称外,将日志消息填充到最多指定数量的实际合并提交的单行描述中。 默认为false,并且true是20的同义词。


我在手册中也发现了默认情况下git使用git merge.ff,也许这可能会影响行为。 - dhblah
我不确定它是否具备以下条件:“当合并一个当前提交的后代提交时”。同时在man git-fmt-merge-msg中也可以找到:“merge.branchdesc除了分支名称外,还将日志消息与它们相关联的分支描述文本一起填充。默认为false。” - edem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接