为什么git会提示我进行post-pull合并提交消息?

sha*_*ham 137 git git-pull

最近,在任何之后git pull,git开始产生我的文本编辑器,并要求合并提交消息.提交消息已经预先填充,我只需要保存并关闭窗口以完成提取.

在过去,它将使用标准提交消息(沿着行Merge branch 'dev' of remote.com:/repo into dev)静默地进行合并.

我最近更新了git到版本1.7.11.3(通过自制程序),但我想不出我可能做了什么来改变这种行为.这是一个设置,还是有其他方式回到它的方式?

Chr*_*her 150

在git 1.7.10中,git开发人员认为合并提交可能太容易了.正如本博文中所解释的那样,强制交互式提交消息行为应该使这些提交消息更加详细,并且可以减少不必要的合并的总体频率.

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

  • 谢谢您的帮助.我不同意合并提交应始终是描述性的.我这样看的原因是因为每当我拉动时自动合并都要求我解释为什么合并是必要的,这很快变得不合理,因为当我没有任何改变时它甚至会这样做. (52认同)
  • 这也是避免这种行为的有用资源:http://longair.net/blog/2009/04/16/git-fetch-and-merge/你应该避免`git pull`; 如果你只是想更新而你不认为你有任何局部变化,请使用`git merge --ff-only`; 如果你真的想要合并一个分支,请使用`git merge --no-ff`. (10认同)
  • 是否有配置标志关闭它?每次输入--no-edit都很烦人. (6认同)
  • @SeanCoetzee:这取决于你的`$ EDITOR`设置,但如果你在OSX上使用git开箱即用它可能是一个名为['vi']的程序(http://www.cs.colostate.edu/helpdocs /vi.html).输入"i"进入"INSERT"模式; 输入你的信息.然后你可以通过点击`ESC`然后输入`:wq`来保存并退出. (3认同)

Dal*_*ark 55

要创建供将来使用的快捷方式,可以: -

~/.gitconfig使用以下内容编辑您:

[core]
    mergeoptions = --no-edit
Run Code Online (Sandbox Code Playgroud)

或者在终端中执行以下操作

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

  • 这对我来说不起作用(OSX上的git),我已经正确设置了它,查看了`git config --global core.mergeoptions`的输出. (13认同)

ema*_*key 10

首先,请注意克里斯托弗在上面的回答中的警告.

然后,如果您仍想禁用自动合并提交消息编辑,请设置此环境变量:

    GIT_MERGE_AUTOEDIT=no
Run Code Online (Sandbox Code Playgroud)

git merge doc页面记录了这个环境变量及其"no"设置.建议仅在需要以非交互方式合并的脚本中使用它,但当然可以将其设置为shell环境的一部分,以使其效果更加永久.

  • 我不知道功能上的差异,但便利性因素使其值得。每次使用时都必须在命令行中重复使用“ --no-edit”标志,因为它似乎无法在达拉斯·克拉克(Dallas Clark)的答案中所述的设置中起作用。设置环境变量是我知道保持设置不变的唯一方法。 (2认同)