我正在使用Git。我从远程存储库拉取并收到错误消息:
请输入提交消息来解释为什么需要此合并,
特别是如果它将更新的上游合并到主题分支中。
我尝试输入一条消息并按 Enter 键,但没有任何反应。
如何告诉 Git/终端我已经完成了消息的输入?
我在 OS X 上使用终端。
提交消息来自 Git,但实际上是编辑器阻止您退出。这是因为 Git 使用您的默认编辑器,由于各种原因,该编辑器通常设置为 vi
(它可能是操作系统上的其他内容,例如 pico
(。
要编写提交消息并退出VI,请执行以下步骤:
- 按
i
(I 表示插入( - 编写合并消息
- 按
esc
(转义( - 写
:wq
(写和退出( - 然后按回车键
您还可以将 Git 配置为使用其他编辑器,以避免必须使用 VI(或其近亲 VIM(。
其实这不是错误!这意味着您应该输入一些消息来标记此合并。
我的操作系统是Ubuntu 14.04
.如果您使用相同的操作系统,则只需执行以下操作:
-
键入一些消息
-
Ctrl C O
-
键入文件名(如"Merge_feature01"(,然后按回车键
-
按 X 键退出
现在,如果您转到.git,您会发现文件"Merge_feature01",这实际上是合并日志。
dr ✨ 使用您喜欢的$EDITOR! ✨
解决方法不是记住神秘的命令,就像在接受的答案中一样,而是将 Git 配置为使用您喜欢和理解的编辑器!
根本问题是 Git 默认使用一个对大多数人来说太不直观的编辑器:Vim。这是因为 Vim 无处不在,而不是因为它对用户友好 😄 现在,不要误会我的意思,I ❤️ Vim,虽然你可以留出一些时间来学习 Vim 并尝试理解为什么有些人认为 Vim 是现存最伟大的编辑器,有一种更快的方法来解决这个问题:-(
这真的就像配置这些选项中的任何一个一样简单
- Git 配置设置
core.editor
(每个项目或全局( VISUAL
或EDITOR
环境变量(这也适用于其他程序(。通常将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 rebase
或git pull --rebase
这是一篇很好的文章,解释了git pull
和git 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