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



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

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

我尝试输入一条消息并按 Enter 键,但没有任何反应。

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

我在 OS X 上使用终端。

提交消息来自 Git,但实际上是编辑器阻止您退出。这是因为 Git 使用您的默认编辑器,由于各种原因,该编辑器通常设置为 vi(它可能是操作系统上的其他内容,例如 pico (。

要编写提交消息并退出VI,请执行以下步骤:

  1. i(I 表示插入(
  2. 编写合并消息
  3. esc(转义(
  4. :wq(写和退出(
  5. 然后按回车键

您还可以将 Git 配置为使用其他编辑器,以避免必须使用 VI(或其近亲 VIM(。

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

我的操作系统是Ubuntu 14.04.如果您使用相同的操作系统,则只需执行以下操作:

  1. 键入一些消息

  2. Ctrl C O

  3. 键入文件名(如"Merge_feature01"(,然后按回车键

  4. X 键退出

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

dr ✨ 使用您喜欢的$EDITOR! ✨

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

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

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

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

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

🔥 使用 Atom

直接从其文档中,在终端中输入以下内容:

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

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

🦄 使用崇高文本

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

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

🤓 使用 Visual Studio Code

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

Just Do,

+ X

+ C

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

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

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

git rebasegit pull --rebase

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

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

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

就我而言,我在 Linux 操作系统上使用 IntelliJ(代码编辑器 - nano(时收到此错误。我解决它的方法是通过以下步骤:

1. Push " Ctrl + X "
2. Type " Y " 
3. Hit "Enter" on your keyboard

可以试试这个:

git pull --no-edit

最新更新