停止git合并以打开文本编辑器

停止git合并以打开文本编辑器,git,merge,Git,Merge,每次我运行git merge命令时,它都会打开文本编辑器,要求我添加额外的消息 如何阻止git打开编辑器&简单地合并我的分支?因为当它打开编辑器时并没有完成合并,即使我添加了一条额外的消息&保存文件,终端也会挂起git merge命令 Merge branch 'my-feature-branch' into main-development # Please enter a commit message to explain why this merge is necessary, # es

每次我运行git merge命令时,它都会打开文本编辑器,要求我添加额外的消息


如何阻止git打开编辑器&简单地合并我的分支?因为当它打开编辑器时并没有完成合并,即使我添加了一条额外的消息&保存文件,终端也会挂起git merge命令

Merge branch 'my-feature-branch' into main-development

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
# 
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
更新

Zeeker的回答是正确的,但我对linux中的sublime text 2也有疑问。尽管我保存并关闭了编辑器,但终端挂起,我相信这是因为编辑器中的最后一个项目文件夹在使用git合并文件时处于打开状态。我从升华中删除了项目,打开了另一个升华窗口,关闭了原来的升华窗口,然后关闭了新的升华窗口。在这之后,一旦我在没有打开项目的情况下运行了giy merge命令和new sublime窗口,一旦我关闭了执行的git merge命令。

使用
--no edit
选项,您可以在

请注意,使用默认消息是不明确的,因为它没有提供有关此合并引入的更改的有意义的信息


旁注:要继续合并,可能必须关闭编辑器


如果您使用的是
1.7.8
之前的git版本,那么仍然可以使用
env
命令实现您想要的功能

env GIT_EDITOR=: git merge <ref-you-want-to-merge>
然后可以使用git merge no edit使用它

git merge --no-edit
这是手册页:

--编辑,-e,-no edit 在提交成功的mechanical merge之前调用编辑器以进一步编辑自动生成的合并消息,以便 用户可以解释和证明合并。--no edit选项可用于接受自动生成的消息(通常不建议这样做)。如果需要,则--edit(或-e)选项仍然有用 您正在使用命令中的-m选项提供草稿消息 行,并希望在编辑器中对其进行编辑

较旧的脚本可能取决于不允许用户编辑合并日志消息的历史行为。他们将看到 编辑器在运行git merge时打开。使其更易于调整 对于更新后的行为,环境变量GIT_MERGE_AUTOEDIT可以在脚本开头设置为no


将以下行添加到
.bash_配置文件
.bashrc
.zshrc
文件中:

export GIT_MERGE_AUTOEDIT=no

可能重复“当它打开编辑器时,它不会完成合并,即使我添加了一条额外的消息&保存文件,终端也会挂起我的git merge命令。”这可能是一个更大的问题。当您执行非合并提交时,您会得到相同的行为吗?@dtech它类似但不相同,相同但不同:)你知道这是添加到哪个版本的git吗?我们有运行git 1.7.1的CentOS 6服务器,它们不支持
--无编辑
选项。@HamishDowner虽然似乎没有特别的发行说明介绍
--无编辑
选项,说它可以与“Git version 1.7.8或更高版本”。我将编辑我的答案,以包含早期版本的解决方案。刚刚发现,答案中提到了
--edit
选项,这意味着--no edit选项。正确的方法是执行
Git\u MERGE\u AUTOEDIT=no Git MERGE
,而不是取消设置
Git\u EDITOR
export GIT_MERGE_AUTOEDIT=no