web-dev-qa-db-fra.com

Utilisation de messages pour messages git commit interrompus après la mise à jour de janus

Janus vim, on a utilisé pour les messages de validation semble poser problème. Le meilleur exemple de ceci est quand vous faites un git pull pour obtenir les modifications de quelqu'un d'autre. L'éditeur est affiché, je tape mon message de commit, j'entre:wqmais au lieu que la validation fonctionne, j'obtiens le message d'erreur suivant:

error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.

Je dois ensuite commettre déjà :(

Comment puis-je faire en sorte que joue bien avec vim?

47
Nat Ritmeyer

Après quelques recherches sur Google, il s'avère que la solution consiste à exécuter les opérations suivantes:

git config --global core.editor $(which vim)
92
Nat Ritmeyer

Nat Ritmeyer a donné la bonne solution . Je vais vous donner la cause. 

Comme Steve Tooke a expliqué , cacher votre ~/.vimrc ou dire explicitement à git d'utiliser le chemin complet de vim résout le problème. Cependant, il termine par "Je voudrais quand même aller à la racine du problème".

Essaye ça:

  1. Lancez un git commit pour vous mettre dans un éditeur vim.
  2. Appuyez sur <CTRL> + Z pour arrêter le processus et revenir au TTY.
  3. Faites un ps et notez pour votre ATS (dont vous obtenez le numéro avec la commande tty):.

    $ tty
    /dev/ttys005
    
    $ ps
      PID TTY           TIME CMD
    17547 ttys005    0:00.15 -bash
    65126 ttys005    0:00.02 git commit
    65127 ttys005    0:00.10 vi .git/COMMIT_EDITMSG
    
    $ which vi
    /usr/bin/vi
    
    $ ll /usr/bin/vi
    lrwxr-xr-x  1 root  wheel  3 Oct  3 17:40 /usr/bin/vi -> vim
    
    $ jobs
    [1]+  Stopped                 git commit
    
  4. Retournez à votre processus vim avec fg %1 (ou le numéro du travail jamais arrêté, votre git commit est répertorié comme).

Ce que nous dit la sortie de Shell est ...

  1. J'utilisais ttys005
  2. Sur le TTY bash appelé git et git appelé vi
  3. Le chemin complet de vi est /usr/bin/vi
  4. La commande vi est un lien symbolique vers vim
  5. L'appel de <CTRL> + Z a arrêté la commande git commit qui était n ° 1 dans la pile de travaux.

Donc, vi est la même commande que vim?!?! Oui, mais vim remarque que son argv[0] était vi et s'exécute en mode compatible . Cela peut causer des problèmes en fonction de ce qui est dans votre .vimrc.

Le meilleure solution consiste à dire à git d'utiliser vim, mais je vous suggère ne supposez pas que votre chemin vim est le même que tout le monde elses (peut-être que vous avez installé via brew install vim)

git config --global core.editor $(which vim)
10
Bruno Bronosky

Cela pourrait être un plugin ou quelque chose dans votre fichier .vimrc. Le meilleur moyen de charger vim en mode sans échec pour modifier les messages de validation est d'utiliser:

git config --global core.editor '/usr/bin/vim -f -u NONE'
4
Mr Wilde

Je rencontrais le même problème chaque fois que je récupérais du dépôt distant et le fusionnais avec une autre branche. 

En tapant ceci dans le terminal, ça a résolu le problème pour moi

git config --global core.editor $(which vim)

2
Lahiru

Si, pour une raison quelconque, git config --global core.editor /usr/bin/vim ne fonctionne pas, essayez sans l'indicateur --global. Je pourrais le faire fonctionner uniquement sans l'indicateur --global.

0
Aakash Jog