我正在使用 Git。我从远程仓库拉取并收到一条错误消息:
请输入提交消息以解释为什么需要此合并,特别是如果它将更新的上游合并到主题分支中。
我尝试输入一条消息并按 Enter 但没有任何反应。
我如何告诉 Git/Terminal 我已经完成了我的消息输入?
我在 OS X 上使用终端。
这不是 Git 错误消息,而是编辑器,因为 git 使用您的默认编辑器。
要解决这个问题:
按 "i" (i for insert) 写你的合并信息 按 "esc" (escape) 写 ":wq" (write & quit) 然后按 enter
其实这不是错误!这意味着您应该输入一些消息来标记此合并。
我的操作系统是 Ubuntu 14.04
。如果你使用相同的操作系统,你只需要这样做:
键入一些消息 CtrlCO 键入文件名(例如“Merge_feature01”)并按 Enter CtrlX 退出
现在,如果您转到 .git,您会发现文件“Merge_feature01”,这实际上是合并日志。
nano
或 pico
),这不适用于 OS X 设置。它绝不是一概而论的,也没有提供对其工作原理的洞察力,因此@AdrianCarr 留下了评论。现在有更好的答案。
nano
,看起来有点模糊。它的底部有一个令人讨厌的栏,告诉你一些键盘快捷键。
tl;dr ✨ 使用你喜欢的 $EDITOR! ✨
解决方法不是记住神秘的命令,就像在接受的答案中那样,而是配置 Git 以使用您喜欢和理解的编辑器!
潜在的问题是 Git 默认使用一个对大多数人来说太不直观的编辑器:Vim。这是因为 Vim 无处不在,而不是因为它是用户友好的 😄 现在,不要误会我的意思,我❤️ Vim,虽然您可以留出一些时间 to learn Vim 并尝试理解为什么有些人认为 Vim 是现存最伟大的编辑器,有一种更快的方法可以解决这个问题 :-)
就像配置这些选项中的任何一个一样简单
git config 设置 core.editor (每个项目,或全局) VISUAL 或 EDITOR 环境变量(这也适用于其他程序)。通常将 export VISUAL="vscode --wait" 填充到您的 .bashrc 或类似配置中。
我将介绍几个流行编辑器的第一个选项,但 GitHub 也有一个出色的 guide on this for many editors。
🔥 使用 Atom
直接 from its docs,在终端中输入:
git config --global core.editor "atom --wait"
Git 通常在继续之前等待编辑器命令完成,但由于 Atom 立即分叉到后台进程,这将不起作用,除非您给它 --wait
选项。这使它像我们想要的那样保持为前台进程。
🦄 使用 Sublime Text
出于与 Atom 案例相同的原因,您需要一个特殊标志来向进程发出信号,表明它不应该分叉到后台:
git config --global core.editor "subl -n -w"
🤓 使用 Visual Studio Code
git config --global core.editor "code --wait"
做就是了,
CTRL + X
CTRL + C
它会要求你保存文件,按 Y,然后你就完成了。
相反,您可以 git CtrlZ 并重试提交,但这次添加“-m”并在其后加上引号中的消息,然后它将提交而不提示您使用该页面。
git commit -m 'I did blah'
由于您的本地存储库几乎没有提交,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!
vi
或vim
。