705

我正在使用 Git。我从远程仓库拉取并收到一条错误消息:

请输入提交消息以解释为什么需要此合并,
特别是如果它将更新的上游合并到主题分支中。

我尝试输入信息并按下Enter,但没有任何反应。

我如何告诉 Git/Terminal 我已经完成了我的消息输入?

我在 OS X 上使用终端。

4

7 回答 7

1655

这不是 Git 错误消息,而是编辑器,因为 git 使用您的默认编辑器。

要解决这个问题:

  1. 按“i”(i 表示插入)
  2. 写下你的合并信息
  3. 按“esc”(退出)
  4. 写 ":wq" (写 & 退出)
  5. 然后按回车
于 2013-09-30T03:17:20.763 回答
67

其实这不是错误!这意味着您应该输入一些消息来标记此合并。

我的操作系统是Ubuntu 14.04. 如果你使用相同的操作系统,你只需要这样做:

  1. 输入一些信息

  2. CtrlCO

  3. 输入文件名(例如“Merge_feature01”)并按Enter

  4. CtrlX退出

现在,如果您转到 .git,您会发现文件“Merge_feature01”,这实际上是合并日志。

于 2015-06-27T07:53:57.813 回答
40

tl;dr ✨ 使用你喜欢的 $EDITOR!✨</h1>

解决方法不是像在接受的答案中那样记住神秘的命令,而是将 Git 配置为使用您喜欢和理解的编辑器!

潜在的问题是 Git 默认使用一个对大多数人来说太不直观的编辑器:Vim。这是因为 Vim无处不在,而不是因为它是用户友好的 现在,不要误会我的意思,我❤️ Vim,虽然你可以留出一些时间来学习 Vim,并尝试理解为什么有些人认为 Vim 是最伟大的存在的编辑器,有一种更快的方法来解决这个问题:-)

就像配置这些选项中的任何一个一样简单

  1. git config 设置core.editor(每个项目,或全局)
  2. VISUALor环境变量(这EDITOR也适用于其他程序)。通常填充export VISUAL="vscode --wait"到您.bashrc或类似的配置中。

我将介绍几个流行编辑器的第一个选项,但 GitHub 也为许多编辑器提供了一个很好的指南

使用原子

直接从其文档中,在终端中输入:

git config --global core.editor "atom --wait"

Git 通常在继续之前等待编辑器命令完成,但由于 Atom 立即分叉到后台进程,这将不起作用,除非你给它--wait选项。这使它像我们想要的那样保持为前台进程。

使用崇高文本

出于与 Atom 案例相同的原因,您需要一个特殊标志来向进程发出信号,表明它不应该分叉到后台:

git config --global core.editor "subl -n -w"

使用 Visual Studio 代码

git config --global core.editor "code --wait"
于 2017-11-10T12:42:38.460 回答
37

做就是了,

CTRL+X

CTRL+C

它会要求你保存文件,按Y,然后你就完成了。

于 2018-05-10T07:39:06.387 回答
11

相反,您可以 git 并重CtrlZ试提交,但这次添加“-m”并在其后加上引号中的消息,然后它将提交而不提示您使用该页面。

于 2017-07-12T13:05:01.707 回答
9

由于您的本地存储库几乎没有提交,git 尝试将您的远程合并到您的本地存储库。这可以通过合并处理,但在您的情况下,也许您正在寻找变基,即将您的提交添加到顶部。你可以这样做

git rebase或者git pull --rebase

git pull这是一篇很好的文章,解释了&之间的区别git pull --rebase

https://www.derekgourlay.com/blog/git-when-to-merge-vs-when-to-rebase/

于 2018-06-08T06:25:10.593 回答
0

就我而言,我在合并后收到了这条消息。 决定:按 esc,在这个类型之后:qa!

于 2020-07-14T12:34:50.737 回答