我正在使用 Git。我从远程仓库拉取并收到一条错误消息:
请输入提交消息以解释为什么需要此合并,
特别是如果它将更新的上游合并到主题分支中。
我尝试输入信息并按下Enter,但没有任何反应。
我如何告诉 Git/Terminal 我已经完成了我的消息输入?
我在 OS X 上使用终端。
我正在使用 Git。我从远程仓库拉取并收到一条错误消息:
请输入提交消息以解释为什么需要此合并,
特别是如果它将更新的上游合并到主题分支中。
我尝试输入信息并按下Enter,但没有任何反应。
我如何告诉 Git/Terminal 我已经完成了我的消息输入?
我在 OS X 上使用终端。
这不是 Git 错误消息,而是编辑器,因为 git 使用您的默认编辑器。
要解决这个问题:
其实这不是错误!这意味着您应该输入一些消息来标记此合并。
我的操作系统是Ubuntu 14.04
. 如果你使用相同的操作系统,你只需要这样做:
输入一些信息
CtrlCO
输入文件名(例如“Merge_feature01”)并按Enter
CtrlX退出
现在,如果您转到 .git,您会发现文件“Merge_feature01”,这实际上是合并日志。
解决方法不是像在接受的答案中那样记住神秘的命令,而是将 Git 配置为使用您喜欢和理解的编辑器!
潜在的问题是 Git 默认使用一个对大多数人来说太不直观的编辑器:Vim。这是因为 Vim无处不在,而不是因为它是用户友好的 现在,不要误会我的意思,我❤️ Vim,虽然你可以留出一些时间来学习 Vim,并尝试理解为什么有些人认为 Vim 是最伟大的存在的编辑器,有一种更快的方法来解决这个问题:-)
就像配置这些选项中的任何一个一样简单
core.editor
(每个项目,或全局)VISUAL
or环境变量(这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"
git config --global core.editor "code --wait"
做就是了,
CTRL+X
CTRL+C
它会要求你保存文件,按Y,然后你就完成了。
相反,您可以 git 并重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!