如何自动化Git合并以避免提示确认提交信息?

47

我正在尝试使用Git编写一些自动化脚本,例如更新子模块、移动到适当的标签等简单的操作,但我现在遇到的一个问题是Git现在强制用户确认合并消息。有没有办法避免这种行为发生?


1
你在什么情况下运行了哪个合并命令以获得这种行为?同时请提供Git版本。 - Dan Hulme
@DanHulme 已经通过下面的评论解决了这个问题。 我使用的是 git 1.7.10,基本上 任何 合并、拉取操作都会导致交互式提示。--no-edit 和导出 GIT_MERGE_AUTOEDIT=no 就解决了这个问题。 - buzzedword
4个回答

76

您可以在git-merge命令后添加--no-edit开关,这样它就不会要求您确认合并信息。


5
Git合并的更新版本(>=1.7.10)将进入交互式会话。为了避免交互式会话,您需要添加--no-edit参数或添加环境变量GIT_MERGE_AUTOEDIT=no。请注意,这不会改变原有意思,只是使内容更加通俗易懂。 - linquize
1
@linquize,我希望你把这个作为答案--这个环境正是我在寻找的。 - buzzedword

25

为了防止在 Mac 上 Git 提示你输入提交信息,将以下内容添加到你的 .bashrc 或 .bash_profile 中(了解这两个文件之间的差异

export GIT_MERGE_AUTOEDIT=no

然后在您的终端中输入:

source ~/.bashrc
重新加载你的bash文件,并在不受任何干扰的情况下继续。

1
编辑 ~/.bashrc~/bash_profile~/.zshrc(或者其他适用于您的终端的文件)将确保更改永久保存到终端会话中。我要提醒的是,明确地调用此文件并非必需,如果用户在其中添加了不希望每个会话执行两次的内容,则可能会产生意外后果。我们可以直接在当前终端会话中执行export GIT_MERGE_AUTOEDIT=no而非调用它。 - Darren Felton
在解决冲突后执行 git merge --continue 命令时,GIT_MERGE_AUTOEDIT 不起作用。编辑器仍然会弹出。 - igor

12

使用此命令:

git merge other_branch --commit --no-edit

--commit表示在合并后自动执行提交操作。

--no-edit表示不显示提交信息编辑器。


0

你可以通过将 vim 替换为 cattrue 来更改编辑器的显示方式,例如:

GIT_EDITOR=true git merge branch_name

这将自动填充合并信息。


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