使用pull命令时,GitHub会锁定Mac终端

97

我正在学习如何在 Mac 上使用 GitHub(命令行),每当我执行 git pull origin master 命令时,都会出现以下提示:

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
".git/MERGE_MSG" 7L, 293C

终端似乎会卡住,不允许我立即输入任何内容,当它最终允许我输入文本时,似乎无法识别git命令。

这是git的一个bug还是我遗漏了什么?


5
它真的锁定了还是你只是不熟悉 vi - Edward Thomson
2
我无法确切地告诉你为什么,但是git希望你输入提交消息,而你很可能在文本编辑器vim中。 - Misch
啊,我明白了,是的,我不熟悉vim。我该如何输入和保存注释然后继续呢? - zero
7
输入 i 来插入注释,然后按 esc 键,输入 :wq 保存并退出。 - Scott Harwell
2
如果你不熟悉 vi,难道不会被锁起来吗? - Ben Racicot
8个回答

232

你现在在文本编辑器vim中! 它是一个模态文本编辑器,因此你需要:

  1. 按下i进入插入模式
  2. 现在你可以像在普通的(非模态)文本编辑器中一样输入消息。
  3. 按下esc回到命令模式
  4. 然后输入:w并按下enter保存。
  5. 最后输入:q并按下enter退出。

5
很棒的是git假设每个人都知道vim。 - user124384
3
@user124384 Git尝试使用您的 $EDITOR 环境变量,但如果找不到它,则会退回到 vi。您可以通过git config的 core.editor 配置回退。请参阅 https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#coreeditor-mjjck - ceyko
我在哪里可以输入 i - Val Do
1
@val-kharitonashvili 在QWERTY键盘上,它与“u”和“o”相邻;) 但实际上,只要终端具有焦点,它就应该可以工作。 - ceyko
1
为什么会发生这种情况?我一直在执行 git merge master,但在过去的两天里,我看到了这个... - mfaani
这个帮了我很多。谢谢。 - zaman

19

简单易懂。

输入:wq并按下enter键。


2
更简单的方法是先按 ESC,然后再按 :,最后按 x(小写)。

2
根据您的描述,编辑器看起来像是vim。 这个控制台只是在告诉您为您想要进行的提交编写一些消息,并且这是强制性的。
  • 只需键入i,您就会进入-- INTER --模式,现在可以编写您的评论。

  • 完成编写后,在键盘上按下esc键,您将进入命令模式。(请参见控制台底部

  • 现在通过编写:w并按下enter键保存更改

Writing <code>:w</code> command

您可以通过输入:q并按下Enter键来退出。

Writing <code>:q</code> command

万岁!终于回到主控制台了。

1

运行此命令

git config --global core.editor "gedit"

在这个文件中添加您的消息并保存。 现在返回并拉取。

0

通常当我们拼写错误时会出现问题。
你可能更感兴趣的是这个命令:

git commit -m "message"

如果出现问题,可能会显示类似以下的内容。
Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

并使用:

git pull

这应该导致:

Already up-to-date.

接下来最好检查一下:

git status

然后再尝试推送:

git push

0

我通过执行以下步骤解决了这个问题

  1. 移除 #MERGE_MSG#

    rm .git/\#MERGE_MSG#

  2. 移除 MERGE_HEAD

    rm .git/MERGE_HEAD

此外,我将git的编辑器显式设置为我熟悉的编辑器vim(你可以设置nano

`git config --global core.editor "vim"`

0

你可以执行以下命令:

git checkout --merge 你的分支

这将会进行当前分支、工作区内容和新分支之间的三方合并,并将你切换至新分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接