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

ber*_*436 440 git macos git-merge git-commit git-commands

我正在使用Git.我从一个远程仓库做了拉,并得到一条错误信息:

"请输入一条提交消息来解释为什么这种合并是必要的,特别是如果它将更新的上游合并到一个主题分支中."

我尝试输入一条消息并按下Enter但没有任何反应.

我怎么告诉Git /终端我输入了我的消息?

我在OS X上使用终端.

Saa*_*awy 1007

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

要解决这个问题:

  1. 按"我"
  2. 写下您的合并消息
  3. 按"esc"
  4. 写":wq"
  5. 然后按回车键

  • 如果它对任何人有帮助,你记住这个的方式是"i"用于"插入","esc"是插入的退出,而":wq"只是"写"和"退出". (127认同)
  • 那个hella很复杂 (83认同)
  • 主啊,我讨厌`Vi` (75认同)
  • 这也许是↑↑↓↓←→←→BA (56认同)
  • 如果尝试输入消息,这是一个很好的假设,导致什么都没发生...... (32认同)
  • 好的,但这是假设他的编辑是'vi`或'vim`. (5认同)
  • '输入:wq'。毫无疑问,这是任何人设计过的最不直观的东西。到底怎么会有人想出如何做到这一点??!!!!!!嘻嘻 (5认同)
  • 为了让生活更轻松,请按照步骤4:写":wq"然后按回车键 (4认同)
  • 我该怎么记得那个:D (3认同)
  • 要将git的默认编辑器切换为"nano",请执行以下命令:`git config --global core.editor"nano"` (3认同)
  • 对于每个困惑的人来说:这个序列与 Git 无关。Git 有时必须要求您提供提交消息(尝试在不提供消息的情况下尝试“git commit”,并且应该会发生同样的情况),并且它通过打开 Git 中默认设置的文本编辑器来完成此操作。在基于 Linux 的操作系统上,这通常是 Vim:一种文本编辑器,专注于用最少的击键完成任务。此答案中的说明是用于编写消息、保存和退出编辑器的按键。同意,如果你从未使用过 Vim,这看起来很奇怪,但这个看起来很奇怪的序列确实与 Git 无关。 (3认同)
  • @JoshBeam啊,也许现在(根据你的记忆建议)我终于可以反复停止这个答案了! (2认同)
  • @Wooble为什么这首先发生?我一如既往地做了'git merge master` ... (2认同)
  • @WesleySmith 我虽然是这样,但这就像在 90 年代在 MK 2 上执行致命一击,除了一个错误的按键,而致命最终会落在我们自己身上。尽管如此,这对我来说在 Mac 的 Android Studio Terminal 中工作得很好。 (2认同)

小智 36

实际上这不是一个错误!这意味着您应该输入一些消息来标记此合并.我的操作系统是Ubuntu 14.04.如果您使用相同的操作系统,您只需按以下步骤操作:

  1. 输入一些消息

  2. CtrlCO

  3. 键入文件名(例如"Merge_feature01"),然后按 Enter

  4. CtrlX 退出

现在,如果你去.git,你会发现文件"Merge_feature01",这实际上就是合并日志.

  • 我想知道有人会怎么知道这个?它的工作方式很奇怪.谢谢你回答这个问题. (4认同)

oli*_*ren 21

tl; dr将编辑器设置为更好的东西,如Sublime或Atom

这里很好用于您喜欢的编辑器的含义或找到更多用户友好.

根本问题是Git默认使用的编辑器对大多数人来说太不直观了:Vim.现在,不要误会我的意思,我喜欢Vim,虽然你可以花一些时间(比如一个月)来学习Vim,并试着理解为什么有些人认为Vim是现存最伟大的编辑,有一个更快的方法解决这个问题:-)

修复不是要记住神秘的命令,比如在接受的答案中,而是配置Git使用你喜欢和理解的编辑器!它就像配置这些选项中的任何一个一样简单

  1. git配置设置core.editor(每个项目,或全局)
  2. VISUALEDITOR环境变量(这适用于其他程序以及)

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

使用Atom

直接从它的文档,在终端输入: git config --global core.editor "atom --wait"

Git通常会等待编辑器命令完成,但由于Atom立即分配到后台进程,这将无效,除非您给它--wait选项.

使用Sublime Text

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

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

  • Vim 不需要一个月。这需要两天时间,只要您随身携带一份您不时需要的备忘单,您就永远不会忘记,一开始。 (2认同)

Man*_*ngh 17

做就是了,

CTRL + X

CTRL + C

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


Ank*_*ain 8

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

git rebase 或者 git pull --rebase

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

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


小智 6

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

  • 大声笑这肯定会解决OP的问题。`git commit -m'我做了等等' (3认同)