github verrouille le terminal mac lors de l'utilisation de la commande pull

95

Je suis en train d'apprendre github sur mac (ligne de commande) et chaque fois que je le git pull origin masterreçois

# 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

le terminal semble se verrouiller et ne me permet pas d'entrer quoi que ce soit immédiatement, puis quand il me permet enfin de saisir du texte, il semble qu'il ne reconnaît pas les commandes git.

Est-ce un bogue dans git ou est-ce que je manque quelque chose?

zéro
la source
5
Est-ce que ça bloque vraiment ou n'est-ce pas familier avec vi?
Edward Thomson
2
Je ne peux pas vous dire exactement pourquoi, mais git veut que vous entriez un message de validation, et vous êtes très probablement dans l'éditeur de texte vim.
Misch
ah je vois, oui je ne suis pas familier avec vim. comment entrer et enregistrer le commentaire puis continuer sur?
zéro
7
tapez ipour insérer un commentaire puis appuyez sur esc et tapez:wq
Scott Harwell
1
Si vous n'êtes pas familier avec vous n'êtes pas vienfermé?
Ben Racicot

Réponses:

225

Vous êtes dans l'éditeur de texte, vim! C'est un éditeur de texte modal , vous devrez donc:

  1. Appuyez ipour entrer en mode insertion .
  2. Vous pouvez maintenant taper votre message, comme si vous étiez dans un éditeur de texte normal (non modal).
  3. Appuyez sur escpour revenir au mode commande .
  4. Puis tapez :wsuivi de enterpour enregistrer.
  5. Enfin :qsuivi de enterpour arrêter.
ceyko
la source
4
C'est génial que git suppose simplement que tout le monde connaît vim.
user124384
2
@ user124384 Git essaie d'utiliser votre $EDITORvariable d'environnement, mais revient vis'il n'en trouve pas. Vous pouvez configurer le repli via git config core.editor. Voir git-scm.com/book/en/v2/…
ceyko
où puis-je taper i?
Val Do
1
@ val-kharitonashvili Sur un clavier querty, il est adjacent à uet o;) Mais vraiment, tant que le terminal a le focus, cela devrait fonctionner.
ceyko
Pourquoi cela arrive-t-il même? Je l'ai toujours fait git merge masteret au cours des 2 derniers jours, je vois ça ...
Chérie
18

Faites simple.

Type :wqetenter

Abbas
la source
2

L'éditeur semble être vim selon vos descriptions. Cette console vous dit simplement d'écrire un message pour le commit que vous voulez faire, et c'est obligatoire comme c'est le cas.

  • Tapez simplement iet vous passerez dans le -- INTER --mode, maintenant vous pouvez écrire vos commentaires.

  • Une fois que vous avez terminé d'écrire, appuyez sur la esctouche de votre clavier et vous passerez en mode commande. ( voir en bas de la console )

  • Maintenant, enregistrez les modifications en écrivant :wpuis en appuyant sur la entertouche

Ecriture de la commande <code>: w </code>

  • Vous pouvez quitter maintenant en écrivant :qpuis en appuyant sur la entertouche

Ecriture de la commande <code>: q </code>

  • Hourra! Enfin, vous êtes de retour à la console principale.
OM Bharatiya
la source
2

Plus simple est d'abord ESC et ensuite : x(minuscules).

Ariel Ruiz
la source
1

Exécutez cette commande

git config --global core.editor "gedit"

Ajoutez votre message dans ce fichier et enregistrez-le. Revenez en arrière maintenant.

Ayman Elshehawy
la source
0

J'ai résolu ce problème en exécutant les étapes suivantes

  1. Supprimer # MERGE_MSG #

    rm .git/\#MERGE_MSG#

  2. Supprimer MERGE_HEAD

    rm .git/MERGE_HEAD

De plus, j'ai explicitement défini l'éditeur de git sur un éditeur que je connais bien avec vim (vous pouvez définir nano )

`git config --global core.editor "vim"`
Lukasz Dynowski
la source
0

Tu peux faire git checkout --merge yourbranch

Une fusion à trois entre la branche actuelle, le contenu de votre arbre de travail et la nouvelle branche est effectuée, et vous serez sur la nouvelle branche.

mdeora
la source
0

Les problèmes surviennent généralement lorsque nous avons mal orthographié quelque chose.
Il est plus probable que cette commande vous intéresse:

git commit -m "message"

s'il y avait un problème, cela pourrait dire quelque chose comme

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)

et utilise:

git pull

ce qui devrait conduire à:

Already up-to-date.

Ensuite, il est bon de vérifier:

git status

et essayez à nouveau de pousser:

git push
Erik Rybalkin
la source