ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

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

我在 OS X 上使用终端。

您的 GIT 似乎已配置为打开预配置的模板,并且该模板正在通过默认编辑器 (vi/vim) 打开。
中止此合并并尝试使用 git pull --rebase。
Form me“Shift ZZ”解决了这个问题

S
Sajid Zeb

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

要解决这个问题:

按 "i" (i for insert) 写你的合并信息 按 "esc" (escape) 写 ":wq" (write & quit) 然后按 enter


好的,但这是假设他的编辑器是 vivim
这太复杂了
如果它对任何人有帮助,你记得的方式是“i”是“insert”,“esc”是退出插入,“:wq”只是“write”和“quit”。
为了让生活更轻松,只需按照步骤 4:写“:wq”,然后按 Enter
这也可能是↑↑↓↓←→←→BA
T
Top-Master

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

我的操作系统是 Ubuntu 14.04。如果你使用相同的操作系统,你只需要这样做:

键入一些消息 CtrlCO 键入文件名(例如“Merge_feature01”)并按 Enter CtrlX 退出

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


我想知道怎么会有人知道这个?这真是太奇怪了。感谢您回答这个问题。
@ScottyBlades 为什么应该这样做?该问题被标记为 osx,此答案涉及 Ubuntu 如何为 Git 设置完全不同的设置(使用 nanopico),这不适用于 OS X 设置。它绝不是一概而论的,也没有提供对其工作原理的洞察力,因此@AdrianCarr 留下了评论。现在有更好的答案。
与此答案相对应的编辑名称是什么?
假设您的编辑器是 nano,看起来有点模糊。它的底部有一个令人讨厌的栏,告诉你一些键盘快捷键。
o
oligofren

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"

Vim 不需要一个月。这需要两天时间,而且你永远不会忘记,只要你一开始时不时需要一份方便的备忘单。
使用像 micro 这样的 CUA 终端编辑器:micro-editor.github.io
D
Developer Guy

做就是了,

CTRL + X

CTRL + C

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


这是如果您的默认编辑器是“pico”或“nano” 如果您的默认编辑器是 vim,则应使用上述注释。
K
K.Dᴀᴠɪs

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


大声笑这肯定会解决OP的问题。 git commit -m 'I did blah'
我在 linux 终端上有 git 版本 1.7.11.4,尽管我给了 git commit -m "message" 或 git commit --message "message",但编辑器仍然不时弹出,请求消息。有人知道为什么忽略“-m”开关吗?
A
Ankush Jain

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

git rebasegit pull --rebase

这是一篇很好的文章,解释了 git pullgit pull --rebase

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


这与这个问题没有直接关系:“我如何告诉 Git/终端我已经完成了我的消息输入?”。用户需要在全局 git config 中设置他的编辑器或设置 EDITOR 变量。
V
Vladimir

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


6年后,这真的是一个有用的答案吗?...
我想是的,因为我昨天遇到了这些
这是多余的,已被接受的答案涵盖。