Comment puis-je configurer un éditeur pour travailler avec Git sous Windows?


561

J'essaie Git sur Windows . J'en suis arrivé à essayer "git commit" et j'ai eu cette erreur:

Le terminal est muet mais aucun VISUEL ni EDITEUR n'est défini. Veuillez fournir le message en utilisant l'option -m ou -F.

J'ai donc compris que j'avais besoin d'une variable d'environnement appelée EDITOR. Aucun problème. Je l'ai réglé pour pointer vers le Bloc-notes. Cela a fonctionné, presque. Le message de validation par défaut s'ouvre dans le Bloc-notes. Mais le Bloc-notes ne prend pas en charge les sauts de ligne nus. Je suis sorti et j'ai obtenu Notepad ++ , mais je ne peux pas comprendre comment configurer Notepad ++ en tant que %EDITOR%tel de manière à ce qu'il fonctionne avec Git comme prévu.

Je ne suis pas marié avec Notepad ++. À ce stade, je ne me soucie pas de l'éditeur que j'utilise. Je veux juste pouvoir taper des messages de commit dans un éditeur plutôt que sur la ligne de commande (avec -m).

Ceux d'entre vous qui utilisent Git sous Windows: quel outil utilisez-vous pour modifier vos messages de validation, et qu'avez-vous dû faire pour le faire fonctionner?


7
TLDR: mettez des guillemets simples sur le chemin de l'exécutable de l'éditeur
yoyo

Probablement pas utile, mais FWIW, j'utilise simplement le bloc-notes ordinaire. Je n'ai rien fait pour que ça marche. Cela a juste fonctionné hors de la boîte par défaut ...
BrainSlugs83

11
Mise à jour de septembre 2015: un simple git config core.editor notepadsuffit désormais. Voir ma réponse mise à jour ci-dessous .
VonC

Juste une note rapide que JEdit n'est pas un éditeur approprié pour git. JEdit n'ouvre qu'une seule instance, même pour plusieurs fichiers. S'il était déjà ouvert, git lui fera ouvrir un nouveau fichier, mais vous devrez alors fermer complètement JEdit avant que git continue. Il n'y a pas d'option de ligne de commande pour amener JEdit à ouvrir une instance distincte pour modifier le message de validation.
GrantRobertson

Si quelqu'un aime Sublime Text 3, voici mes instructions sur la façon dont je l'ai configuré pour Windows ... et Linux aussi: les meilleurs paramètres pour Sublime Text 3 comme éditeur git (instructions Windows et Linux) . @yoyo, TLDR pour utiliser n'importe quel éditeur de texte: mettez des guillemets simples autour du chemin vers l'exécutable de l'éditeur ET utilisez des barres obliques (/) PAS des barres obliques inverses (\) dans le nom du chemin vers l'exécutable Windows.
Gabriel Staples le

Réponses:


562

Mise à jour de septembre 2015 (6 ans plus tard)

La dernière version de git-for-Windows (2.5.3) comprend désormais:

En configurant git config core.editor notepad, les utilisateurs peuvent désormais utiliser notepad.execomme éditeur par défaut .
La configuration git config format.commitMessageColumns 72sera récupérée par l'encapsuleur du bloc-notes et encapsulera le message de validation une fois que l'utilisateur l'aura modifié.

Voir commit 69b301b de Johannes Schindelin ( dscho) .

Et Git 2.16 (Q1 2018) affichera un message pour indiquer à l'utilisateur qu'il attend la fin de l'édition lors de la création d'un éditeur, au cas où l'éditeur s'ouvre sur une fenêtre cachée ou dans un endroit obscur et que l'utilisateur se perd.

Voir commit abfb04d (07 décembre 2017) et commit a64f213 (29 novembre 2017) par Lars Schneider ( larsxschneider) .
Aidé par: Junio ​​C Hamano ( gitster) .
(Fusionné par Junio ​​C Hamano - gitster- dans commit 0c69a13 , 19 déc 2017)

launch_editor(): indique que Git attend l'entrée utilisateur

Lorsqu'un graphique GIT_EDITORest généré par une commande Git qui s'ouvre et attend l'entrée utilisateur (par exemple " git rebase -i"), la fenêtre de l'éditeur peut être masquée par d'autres fenêtres.
L'utilisateur peut être laissé à regarder la fenêtre du terminal Git d'origine sans même se rendre compte qu'il / elle doit interagir avec une autre fenêtre avant que Git puisse continuer. Pour cet utilisateur, Git semble suspendu.

Imprimez un message indiquant que Git attend l'entrée de l'éditeur dans le terminal d'origine et supprimez-le lorsque l'éditeur revient, si le terminal prend en charge l'effacement de la dernière ligne


Réponse originale

Je viens de le tester avec git version 1.6.2.msysgit.0.186.gf7512 et Notepad ++ 5.3.1

Je préfère ne pas avoir à définir de variable EDITOR, j'ai donc essayé:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

Cela donne toujours:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

Si je définis un npp.bat comprenant:

"c:\Program Files\Notepad++\notepad++.exe" %*

et je tape:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

Cela fonctionne à partir de la session DOS, mais pas à partir du shell git .
(pas avec le mécanisme de configuration core.editor, un script contenant " start /WAIT..." ne fonctionnerait pas, mais ouvrirait seulement une nouvelle fenêtre DOS)


La réponse de Bennett mentionne la possibilité d'éviter d'ajouter un script, mais de référencer directement le programme lui - même entre des guillemets simples . Notez la direction des barres obliques! Utilisez /NOT \pour séparer les dossiers dans le nom du chemin!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Ou si vous êtes dans un système 64 bits:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Mais je préfère utiliser un script (voir ci-dessous): de cette façon, je peux jouer avec différents chemins ou différentes options sans avoir à m'inscrire à nouveau git config.


La solution réelle (avec un script) était de réaliser que:
ce à quoi vous faites référence dans le fichier de configuration est en fait un /bin/shscript shell ( ) , pas un script DOS.

Donc, ce qui fonctionne, c'est:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

avec C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

ou

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

Avec ce paramètre, je peux faire ' git config --global --edit' depuis DOS ou Git Shell, ou je peux faire ' git rebase -i ...' depuis DOS ou Git Shell.
Les commandes de Bot déclencheront une nouvelle instance de notepad ++ (d'où l' -multiInstoption '), et attendront que cette instance soit fermée avant de continuer.

Notez que j'utilise uniquement '/', pas \'. Et j'ai installé msysgit en utilisant l'option 2. (Ajoutez le git\binrépertoire à la PATHvariable d'environnement, mais sans remplacer certains outils Windows intégrés)

Le fait que l'encapsuleur notepad ++ soit appelé .bat n'est pas important.
Il serait préférable de le nommer 'npp.sh' et de le placer dans le [git]\cmdrépertoire (ou dans n'importe quel répertoire référencé par votre variable d'environnement PATH).


Voir également:


lightfire228 ajoute dans les commentaires :

Pour toute personne ayant un problème où N ++ ouvre simplement un fichier vide et git ne prend pas votre message de validation, voir " Abandon de la validation en raison d'un message vide ": changez votre fichier .batou .shpour dire:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Cela indiquera à notepad ++ d'ouvrir le fichier de validation temporaire, plutôt qu'un nouveau vierge.


Dans votre script shell, vous avez besoin de guillemets doubles autour de $ *, sinon cela ne fonctionnera pas correctement pour les chemins contenant des espaces. Merci pour l'explication approfondie - j'installe git (et un tas d'autres choses) sur Windows pour les programmeurs débutants, et la ligne de commande est assez difficile à bloquer sans leur faire apprendre les commandes vi.
Sarah Mei

Un autre exemple concret: stackoverflow.com/questions/1634161/…
VonC

1
Suite à la réponse de Bennett, vous n'avez pas besoin de créer un script, vous pouvez simplement utiliser une apostrophe "à l'intérieur des guillemets".
Tobias Kienzler

@Tobias: vrai, j'ai inclus sa réponse dans la mienne, ainsi que la raison pour laquelle je préfère toujours référencer un script dans mes git configparamètres.
VonC

6
@NateGlenn Utilisez l' dir /Xéquivalent abrégé : " PROGRA~2" for " Program Files (x86)", qui est une bonne habitude à prendre lorsque vous utilisez des outils compatibles multiplateforme sur Windows, ce qui vous permet d'écraser les espaces.
JJ Zabkar

300

En s'appuyant sur la réponse de Darren , pour utiliser Notepad ++, vous pouvez simplement le faire (le tout sur une seule ligne):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

De toute évidence, la C:/Program Files/Notepad++/notepad++.exepartie doit être le chemin d'accès à l'exécutable Notepad ++ sur votre système. Par exemple, cela pourrait l'être C:/Program Files (x86)/Notepad++/notepad++.exe.

Cela fonctionne comme un charme pour moi.


10
Moi aussi! BTW, ces commutateurs sont expliqués dans C: / Program Files / Notepad ++ / user.manual / documentation / notepad-user-manual / command-line.html
Andrew Swan

23
Surveillez le Bloc-notes ++ situé dans `C: \ Program Files (x86)`
mindless.panda

8
Pour Windows x64, passez à: git config --global core.editor "'C: / Program Files (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Je me rends compte que je suis en retard à cette fête, mais par curiosité, quelqu'un sait-il (ou même se souvient-il, après toutes ces années) pourquoi on spécifierait "-notabbar"? Je comprends le raisonnement derrière les autres paramètres (enfin, je ne sais pas pourquoi "-noPlugin", en fait), mais pas celui-ci.
Wilson F

11
@WilsonF La raison en est que vous DEVEZ quitter notepad ++ pour que git cesse d'attendre votre entrée et continue. Vous ne voulez pas ouvrir d'autres onglets dans cette instance de Notepad ++ car alors votre session git semble être gelée! Ces paramètres font exactement la bonne chose: si vous avez déjà Notepad ++ ouvert, vous obtenez une nouvelle instance, qui ne vous permet pas d'ouvrir d'autres fichiers, et que vous devez fermer lorsque vous avez terminé pour que git sache que vous avez terminé l'édition . Fonctionne de la même manière pour les messages de validation.
ErikE

50

Quoi qu'il en soit, je viens de jouer avec cela et j'ai trouvé que ce qui suit fonctionnait bien pour moi:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Je ne pense pas que CMD aime les guillemets simples, vous devez donc utiliser des guillemets doubles "pour spécifier l'argument de chaîne intégrée à l'espace".

Cygwin (qui, je crois, est la plate-forme sous-jacente de Git's Bash), d'autre part, aime les deux 'et "; vous pouvez spécifier un chemin d'accès de type CMD, en utilisant /au lieu de \, tant que la chaîne est citée, c'est-à-dire dans ce cas, en utilisant des guillemets simples.

Le -mremplacement / indique l'utilisation de plusieurs éditeurs et il n'est pas nécessaire de %*clouer à la fin.


Merci pour l'explication de la citation simple / double, c'est logique maintenant!
Patrick McDonald,

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"fonctionne comme un charme pour moi.
Vlad Holubiev

J'ai utilisé `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, mais lorsque j'exécute "git commit", il s'ouvre un éditeur de bloc-notes. Avez-vous des raisons de penser que ce serait le cas? Merci d'avance.
Ryan Chase

@RyanChase Supprimez l'entrée de configuration locale de ./git/config par exempleeditor = notepad
Ricky Boyce

1
Git Bash fonctionne sous MingW64, pas Cygwin. Cygwin a son propre binaire Git.
Hans Deragon

27

Edit: Après la mise à jour vers Vim 7.3, je suis arrivé à la conclusion que la façon la plus propre et la plus simple de le faire est:

  1. Ajoutez le dossier principal de Vim à votre chemin (clic droit sur Poste de travailPropriétésAvancéVariables d'environnement )

  2. Lance ça:

    git config --global core.editor "gvim --nofork '%*'"
    

Si vous le faites de cette façon, je suis presque sûr que cela fonctionnera également avec Cygwin.

Réponse originale:

Même avec quelques réponses liées à Vim, j'ai eu du mal à faire fonctionner cela avec gVim sous Windows (sans utiliser de fichier batch ou% EDITOR% ou Cygwin).

Ce que je suis finalement arrivé est agréable et propre, et tire de quelques-unes des solutions ici:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Un problème qui m'a pris du temps est que ce ne sont pas des barres obliques inverses de style Windows. Ce sont des barres obliques normales.


1
Si vim est installé dans Program Files(x86), vous devez évidemment changer le chemin.
Swapnil

15

Notepad ++ fonctionne très bien, même si je choisis de m'en tenir au Bloc-notes, -m, ou même parfois au "edit" intégré.

Le problème que vous rencontrez avec Notepad ++ est lié à la façon dont Git lance l'exécutable de l'éditeur. Ma solution à cela consiste à définir la variable d'environnement EDITORdans un fichier de commandes, plutôt que l'exécutable de l'éditeur réel, qui effectue les opérations suivantes:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITindique à la session de ligne de commande de s'arrêter jusqu'à ce que l'application se termine, vous pourrez donc modifier le contenu de votre cœur pendant que Git vous attend avec plaisir. % * transmet tous les arguments au fichier de commandes via Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

J'ai eu du mal à faire fonctionner cela sous PowerShell. Cette méthode ( stackoverflow.com/questions/10564/… ) a bien fonctionné cependant.
Peter Stephens

11

WordPad !

Je suis heureux d'utiliser Vim, mais depuis que j'essaie de présenter Git à la société, je voulais quelque chose que nous aurions tous, et j'ai trouvé que WordPad semble fonctionner correctement (c'est-à-dire que Git attend jusqu'à ce que vous ayez fini de modifier et de fermer) la fenêtre).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Cela utilise Git Bash sur msysgit; Je n'ai pas essayé depuis l'invite de commande Windows (si cela fait une différence).


J'ai aimé la simplicité de cela, mais cela n'a pas fonctionné pour moi hors de la boîte. Voici ce que j'ai essayé. Je reçois le message d'erreur suivant: erreur: il y a eu un problème avec l'éditeur «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe».
Shaun Luttin du

3
Les citations sont incorrectes. Vous devez mettre les guillemets doubles en dehors des guillemets simples . Autrement dit, utilisez "'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe'", et cela fonctionnera ensuite.
Shaun Luttin

Vous pouvez également bénéficier de barres obliques (/) au lieu de barres obliques inverses (\).
Chris Jones

1
En outre, il est probablement préférable d'utiliser "git config --global" au lieu de simplement "git config" pour cela. Vous souhaitez très probablement que le paramètre s'applique à tous les référentiels git sur votre poste de travail, pas seulement celui dans lequel vous vous trouvez actuellement.
Chris Jones

@ChrisJones, Inutile dans ce cas car les "fichiers programme" ont un espace entre eux.
Pacerier

9

J'utilise également Cygwin sous Windows, mais avec gVim (par opposition au Vim basé sur terminal ).

Pour que cela fonctionne, j'ai fait ce qui suit:

  1. Création d'un fichier de commandes en ligne (nommé git_editor.bat) qui contient les éléments suivants: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Placé git_editor.batdans mon PATH.
  3. Ensemble GIT_EDITOR=git_editor.bat

Ceci fait, git commitetc. invoquera correctement l'exécutable gVim.

REMARQUE 1: L' --noforkoption de gVim garantit qu'il se bloque jusqu'à ce que le message de validation ait été écrit.

REMARQUE 2: les guillemets autour du chemin vers gVim sont requis si vous avez des espaces dans le chemin.

NOTE 3: Les guillemets autour de "% *" sont nécessaires au cas où Git passe un chemin de fichier avec des espaces.


Pour les personnes qui utilisent msysgit (pas git de cygwin), j'ai pu simplifier un peu cela. stackoverflow.com/questions/10564/…
Nick Knowlson

À la réflexion, cela pourrait aussi fonctionner avec cygwin, je ne suis pas totalement sûr
Nick Knowlson

8

Grâce à la communauté Stack Overflow ... et à quelques recherches, j'ai pu obtenir mon éditeur préféré, EditPad Pro , comme éditeur principal avec msysgit 1.7.5.GIT et TortoiseGit v1.7.3.0 sur Windows XP SP3. ..

En suivant les conseils ci-dessus, j'ai ajouté le chemin vers un script Bash pour l'éditeur de code ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Cependant, après plusieurs tentatives infructueuses des solutions mentionnées ci-dessus ... J'ai finalement réussi à faire fonctionner cela. Selon la documentation d'EditPad Pro, l'ajout du drapeau '/ newinstance' permettrait au shell d'attendre l'entrée de l'éditeur ...

Le drapeau ' / newinstance ' était la clé dans mon cas ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Oui, cette double barre oblique pour le paramètre newinstance devrait être dans les documents d'Editpad. Merci de l'avoir noté ici!
gwideman

EditPad Pro nécessite des commutateurs de ligne de commande comme /newinstanceavoir exactement une barre oblique. C'est assez normal pour les applications Windows. Si vous appelez EditPad à partir d'un shell UNIX, vous devrez utiliser le mécanisme proposé par votre shell pour échapper à la barre oblique afin qu'il ne considère pas le commutateur comme un chemin absolu et transmet une seule barre oblique littérale à la ligne de commande d'EditPad.
Jan Goyvaerts

2
Si vous avez EditPad Pro 7 et que vous souhaitez appeler EditPad Pro à partir d'un processus qui souhaite attendre le processus EditPad, vous devez passer le /waitcommutateur sur la ligne de commande EditPad. Vous pouvez utiliser /waitavec ou sans /newinstancepour contrôler si une nouvelle fenêtre EditPad doit être ouverte ou si une fenêtre existante doit être réutilisée. Le processus lancé par votre script attendra la fermeture du fichier, qu'une fenêtre ait été créée ou réutilisée. EditPad Pro 6 et versions antérieures ne prennent pas en charge /wait.
Jan Goyvaerts

@JanGoyvaerts ~ Merci pour la /waitpointe du drapeau monsieur ... :)
Eddie B

Je n'ai pas pu faire fonctionner EditPad Lite pour moi en utilisant les instructions ci-dessus. C'était peut-être parce que j'essayais d'invoquer EditPad (via Git) en utilisant le terminal Windows plutôt que Git Bash ou un autre shell UNIX. Ce qui a fonctionné pour moi, c'était d'éditer directement la [core]section de .gitconfig pour inclure la ligne editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

Pour Atom, vous pouvez faire

git config --global core.editor "atom --wait"

et similaire pour Visual Studio Code

git config --global core.editor "code --wait"

qui ouvrira une fenêtre de code Atom ou Visual Studio pour vous permettre de valider,

ou pour Sublime Text :

git config --global core.editor "subl -n -w"

Beaucoup plus simple et efficace. Je vous remercie.
rom5jp

6

Modifiez le fichier .gitconfig dans le dossier c: \ Users \ YourUser et ajoutez:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

C'est le seul symptôme de problèmes plus importants. Notamment que vous avez un paramètre TERM=dumb. D'autres choses qui ne fonctionnent pas correctement sont la lesscommande qui dit que vous n'avez pas de terminal entièrement fonctionnel.

Il semble que cela soit le plus souvent causé par la définition de TERM sur quelque chose dans vos variables d'environnement Windows globales. Pour moi, le problème est survenu lorsque j'ai installé Strawberry Perl, certaines informations à ce sujet se trouvent sur le bogue msysgit pour ce problème ainsi que plusieurs solutions.

La première solution consiste à le corriger dans votre ~ / .bashrc en ajoutant:

export TERM=msys

Vous pouvez le faire à partir de l'invite Git Bash comme suit:

echo "export TERM=msys" >> ~/.bashrc

L'autre solution, qui est finalement ce que j'ai fait parce que je ne me soucie pas des raisons de Strawberry Perl pour ajouter TERM=dumbà mes paramètres d'environnement, est d'aller supprimer le TERM=dumbcomme indiqué dans ce commentaire sur le rapport de bogue msysgit .

Panneau de configuration / Système / Avancé / Variables d'environnement ... (ou similaire, selon votre version de Windows) est l'endroit où les variables d'environnement collantes sont définies sur Windows. Par défaut, TERM n'est pas défini. Si TERM y est défini, vous (ou l'un des programmes que vous avez installés - par exemple Strawberry Perl) l'avez défini. Supprimez ce paramètre et tout ira bien.

De même, si vous utilisez Strawberry Perl et que vous vous souciez du client CPAN ou quelque chose comme ça, vous pouvez laisser le TERM=dumbseul et l'utiliser unset TERMdans votre fichier ~ / .bashrc, ce qui aura un effet similaire à la définition d'un terme explicite comme ci-dessus.

Bien sûr, toutes les autres solutions sont correctes en ce que vous pouvez utiliser git config --global core.editor $MYFAVORITEEDITORpour vous assurer que Git utilise votre éditeur préféré lorsqu'il doit en lancer un pour vous.


Merci beaucoup! j'ai eu ce problème à cause de Strawberry perl et ça me rendait fou! merci pour le signaler
Dmitry Avtonomov


4

J'ai eu PortableGit 1.6 qui fonctionnait bien, mais après la mise à niveau vers la version Windows PortableGit 1.7, j'ai eu des problèmes. Certaines commandes Git ouvrent le bloc-notes ++ exe très bien, mais d'autres non, en particulier le rebase Git se comporte différemment.

Le problème est que certaines commandes exécutent le processus cmd Windows et certaines utilisent le processus cmd Unix. Je veux donner des attributs de démarrage à l'éditeur Notepad ++, j'ai donc besoin d'un script personnalisé. Ma solution est la suivante.

  1. Créez un script pour exécuter un éditeur de texte approprié. Le script a l'air bizarre, mais il gère à la fois la variation Windows et Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Définissez la variable globale core.editor

    Le script a été enregistré dans le dossier git / cmd, il se trouve donc déjà dans un chemin gitconsole. Ceci est obligatoire car un chemin complet peut ne pas fonctionner correctement.

    git config --global core.editor "git-editor.bat"
    

Maintenant, je peux exécuter les commandes git commit -a et git rebase -i master . Essayez-le si vous avez des problèmes avec l'outil Git Windows.


4

J'utilise Git sur plusieurs plateformes et j'aime utiliser les mêmes paramètres Git sur chacune d'elles. (En fait, j'ai tous mes fichiers de configuration sous contrôle de version avec Git, et j'ai mis un clone de référentiel Git sur chaque machine.) La solution que j'ai trouvée est la suivante:

J'ai mis mon éditeur sur giteditor

git config --global core.editor giteditor

Ensuite, je crée un lien symbolique appelé giteditor qui se trouve dans mon PATH . (J'ai un répertoire bin personnel , mais n'importe où dans le PATH fonctionne.) Ce lien pointe vers mon éditeur actuel de choix. Sur différentes machines et différentes plates-formes, j'utilise différents éditeurs, cela signifie donc que je n'ai pas à changer ma configuration universelle de Git ( .gitconfig ), juste le lien qui giteditor pointe.

Les liens symboliques sont gérés par tous les systèmes d'exploitation que je connais, bien qu'ils puissent utiliser des commandes différentes. Pour Linux, vous utilisez ln -s . Pour Windows, vous utilisez le cmd intégré mklink . Ils ont des syntaxes différentes (que vous devriez rechercher), mais tout fonctionne de la même manière, vraiment.


En fait, j'ai essayé cela sur Windows7 et cela ne fonctionne pas depuis msys git. Il diterror: cannot spawn giteditor: No such file or directory
DanielSank

4

Basé sur la suggestion de VonC , cela a fonctionné pour moi (me rendait fou):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

L'omission -waitpeut provoquer des problèmes, surtout si vous travaillez avec Gerrit et changez les identifiants qui doivent être copiés manuellement au bas de votre message de validation.


4

j'ai du faire deux suivantes pour que Git lance Notepad ++ dans Windows:

  • Ajoutez ce qui suit à .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Modifiez le raccourci pour lancer le shell Git Bash à exécuter en tant qu'administrateur, puis utilisez-le pour lancer le shell Git Bash. Je devinais que l'entrée du menu contextuel "Git Bash here" ne lançait pas Notepad ++ avec les autorisations requises.

Après avoir fait les deux ci-dessus, cela a fonctionné.


3

J'utilise Cygwin sous Windows, j'utilise donc:

export EDITOR="emacs -nw"

C'est -nwpour no-windows, c'est-à-dire dire à Emacs de ne pas essayer d'utiliser X Window .

Les raccourcis clavier Emacs ne fonctionnent pas pour moi à partir d'un shell Windows, donc je n'utiliserais cela qu'à partir d'un shell Cygwin ... ( rxvt est recommandé.)


3

Voici ma configuration pour utiliser Geany comme éditeur pour Git:

git config --global core.editor C:/path/to/geany.bat

avec le contenu suivant dans geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Il fonctionne à la fois sur une console DOS et sur msysgit.


2
VonC a répondu à propos de notepad ++, ma réponse est pour Geany?
CharlesB

2

Il semble que Git ne trouve pas l'éditeur s'il y a des espaces dans le chemin. Vous devrez donc mettre le fichier batch mentionné dans la réponse de Patrick dans un chemin non blanc.


3
Ce format fonctionne bien pour les chemins avec des espaces: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", il peut donc être pratique pour vous d'éviter de créer un fichier batch
Carl

2

J'ai eu du mal à faire coopérer Git avec WordPad , Komodo Modifier et à peu près tous les autres éditeurs que je lui donne. La plupart sont ouverts pour l'édition, mais Git n'attend clairement pas que la sauvegarde / fermeture se produise.

En tant que béquille, je viens de faire ie

git commit -m "Fixed the LoadAll method"

pour faire bouger les choses. Cela a tendance à garder mes messages de validation un peu plus courts qu'ils ne devraient probablement l'être, mais il est clair qu'il y a du travail à faire sur la version Windows de Git.

Le GitGUI n'est pas si mal non plus. Cela prend un peu d'orientation, mais après cela, cela fonctionne assez bien.


2

Je préfère utiliser Emacs. L'installation peut être un peu délicate.

  1. Téléchargez Emacs et décompressez-le quelque part comme c:\emacs .
  2. Courez c:\emacs\bin\addpm.exe. Vous devez cliquer avec le bouton droit et "Exécuter en tant qu'administrateur" si vous utilisez Windows Vista ou supérieur. Cela mettra les exécutables sur votre chemin.
  3. Ajoutez (server-start)quelque part dans votre .emacsfichier. Consultez la FAQ Windows d'Emacs pour savoir où placer votre .emacsfichier.
  4. git config --global core.editor emacsclientw

Git va maintenant ouvrir des fichiers dans un processus Emacs existant. Vous devrez exécuter manuellement ce processus existant à partir de c:\emacs\bin\runemacs.exe.


1

J'ai réussi à faire fonctionner la version de l'environnement en définissant la variable EDITOR à l'aide de guillemets et /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

Je viens d'avoir le même problème et j'ai trouvé une solution différente. Je devenais

error: There was a problem with the editor 'ec'

J'ai VISUAL=ec, et un fichier batch appelé ec.batsur mon chemin qui contient une ligne:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Cela me permet de modifier des fichiers à partir de la ligne de commande avec ec <filename>, et avoir VISUALdéfini signifie que la plupart des programmes Unixy le récupèrent également. Git semble rechercher le chemin différemment à mes autres commandes si - quand je regardais un git commitdans Process Monitor je l' ai vu regarder dans chaque dossier sur le chemin ecet ec.exe, mais pas ec.bat. J'ai ajouté une autre variable d'environnement ( GIT_EDITOR=ec.bat) et tout allait bien.


1

J'utilise GitHub pour Windows qui est une belle option visuelle. Mais je préfère également la ligne de commande, pour que cela fonctionne lorsque j'ouvre un référentiel dans un shell Git, je viens de définir ce qui suit:

git config --global core.editor vim

ce qui fonctionne très bien.



1

J'ai trouvé une solution magnifiquement simple publiée ici - bien qu'il puisse y avoir une erreur dans le chemin dans lequel vous devez copier le fichier "subl" donné par l'auteur.

J'utilise Windows 7 x64 et j'ai dû mettre le fichier "subl" dans mon /Git/cmd/dossier pour le faire fonctionner.

Cela fonctionne comme un charme, cependant.


1

Atom et Windows 10

  1. J'ai fait un clic droit sur l'icône Atom sur le bureau et cliqué sur les propriétés.
  2. Copié le chemin d'emplacement "Démarrer dans"
  3. Regardé là-bas avec l'Explorateur Windows et trouvé "atom.exe".
  4. J'ai tapé ceci dans Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Remarque: j'ai tout changé \pour /. J'ai créé un .bashrc dans mon répertoire personnel et utilisé /pour définir mon répertoire personnel et cela a fonctionné, j'ai donc supposé que /ce serait la voie à suivre.


veuillez vérifier cette URL, il sera utile d'augmenter la qualité de votre contenu
Willie Cheng

@willie Merci, j'ai formaté le texte et ajouté quelques balises. J'espère que cela l'améliorera un peu.
Jonathan Ramos

0

Voici une solution avec Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Si aucun chemin, ne passez aucun chemin

  2. Si le chemin est vide, passez le chemin vide

  3. Si le chemin n'est pas vide, convertissez-le au format Windows.

Ensuite, j'ai défini ces variables:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR permet au script de fonctionner avec Git

  2. GIT_EDITOR permet au script de fonctionner avec les commandes Hub

La source


0

Cela fonctionne pour moi en utilisant Cygwin et TextPad 6 (EDIT: cela fonctionne également avec TextPad 5 tant que vous apportez la modification évidente au script), et le modèle pourrait probablement être utilisé pour d'autres éditeurs également:

Fichier ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Fichier ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Cette doublure fonctionne également:

Fichier ~/script/textpad.sh (option 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

Cela a fonctionné pour moi:

  1. Ajoutez le répertoire qui contient l'exécutable de l'éditeur à votre variable PATH . (Par exemple, "C: \ Program Files \ Sublime Text 3 \" )
  2. Redémarrez votre ordinateur.
  3. Remplacez la variable Git globale core.editor par le nom de l'exécutable de l'éditeur sans l'extension '.exe' (par exemple git config --global core.editor sublime_text)

C'est ça!

REMARQUE: Sublime Text 3 est l'éditeur que j'ai utilisé pour cet exemple.


Lorsqu'il est configuré de cette façon, Sublime Text 3 ouvre-t-il plusieurs instances ou gère-t-il le fait que git a besoin de se fermer pour signaler la fin de l'édition?
James World

1
Je pense que cela ouvrira une nouvelle fenêtre. Vous pouvez ajouter le commutateur --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.