使用pull命令时github锁定mac终端


95

我正在学习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中的错误还是我缺少什么?


5
它真的锁定了还是只是您不熟悉vi
爱德华·汤姆森

2
我无法确切告诉您原因,但是git希望您输入提交消息,并且您很可能在文本编辑器vim中。
Misch 2012年

啊,我知道了,是的,我不熟悉vim。如何输入并保存评论,然后继续?
零时

7
键入i要插入评论,然后按esc并键入:wq
Scott Harwell 2012年

1
如果您不熟悉,vi就不会被锁起来吗?
本·拉西科特

Answers:


225

您正在使用文本编辑器,vim!这是一个模式文本编辑器,因此您需要:

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

4
git假设每个人都知道vim是很棒的。
2015年

2
@ user124384 Git尝试使用您的$EDITOR环境变量,但vi如果找不到该变量,则会退回到该变量。您可以通过git config's配置后备core.editor。见git-scm.com/book/en/v2/...
ceyko

我在哪里可以打字i
Val Do

1
@ val-kharitonashvili在普通键盘上,它与uand 相邻o;)但是,实际上,只要终端机具有焦点,它就应该可以工作。
ceyko

为什么会发生这种情况?我一直在做git merge master,在过去的2天里,我一直在观察……
Honey


2

根据您的描述,编辑器看起来像是vim。该控制台只是告诉您为要进行的提交写一些消息,它是强制性的。

  • 只需键入i,您就可以进入-- INTER --模式,现在您可以编写评论了。

  • 完成写操作后,按esc键盘上的键,您将进入命令模式。(请参阅控制台底部

  • 现在通过写:w然后enter按键来保存更改

编写<code>:w </ code>命令

  • 您可以先书写:q然后enter按键退出

编写<code>:q </ code>命令

  • 欢呼!最后,您回到主控制台。



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 yourbranch

当前分支,工作树内容和新分支之间的三向合并完成,您将进入新分支。


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.