2012-07-31 246 views
107

最近,在任何git pull之后,git已经开始产生我的文本编辑器,并且要求提交合并提交消息。提交消息已经预填充,我只需保存并关闭窗口即可完成拉取操作。为什么git提示我提交后合并提交消息?

过去,它会默默地执行合并,并带有标准提交消息(沿着Merge branch 'dev' of remote.com:/repo into dev的行)。

我最近更新git到版本1.7.11.3(通过homebrew),但不能想到我可能已经做了什么来改变这种行为。这是一个设置,还是有其他方式回到原来的状态?

回答

122

在git 1.7.10中,git开发者决定合并提交可能太容易了。如在this blog post,中所解释的,强制交互式提交消息行为应该使得这些提交消息更加详细并且可以减少不必要的合并的总体频率。

您可以使用--no-edit标志来避免此行为,但是,不。合并提交,就像任何对历史的提交一样,应该很好地构建。你的历史应该是有用的。

+0

非常好,谢谢你的信息。 – shanebonham 2012-07-31 17:42:37

+40

感谢您的帮助。我不同意合并提交应该始终是描述性的。我查看这个的原因是因为自动合并每当我拉我要求我解释为什么合并是必要的,这很快就变得不合理,因为它甚至在没有任何变化时这样做。 – Brian 2012-11-13 15:57:56

+8

这也是避免这种行为的有用资源:http://longair.net/blog/2009/04/16/git-fetch-and-merge/你应该避免'git pull';如果你只是想更新并且你认为你没有任何本地修改,就使用'git merge --ff-only';使用'git merge --no-ff',如果你真的试图合并一个分支。 – Glyph 2013-04-24 22:00:29

40

要创建快捷方式以备将来使用,或者: -

编辑您的~/.gitconfig下列要求:

[core] 
    mergeoptions = --no-edit 

或执行中

终端

git config --global core.mergeoptions --no-edit

+12

这并不适用于我(OSX上的git),我已经正确设置了它,查看'git config --global core.mergeoptions'的输出。 – jvannistelrooy 2015-01-15 16:19:30

+3

也不适用于我 – 2016-10-05 12:03:02

4

一以下,注意克里斯托弗在上面的回答中的警告。

然后,如果你仍然想禁用自动合并提交信息的编辑,设置这个环境变量:

GIT_MERGE_AUTOEDIT = no 

这个环境变量和它的“无”的设置都记录在git merge文档页面上。建议仅在需要非交互式合并的脚本中使用它,但当然它可以设置为shell环境的一部分,以使其效果更持久。