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?
git config core.editor notepad
suffit désormais. Voir ma réponse mise à jour ci-dessous .Réponses:
Mise à jour de septembre 2015 (6 ans plus tard)
La dernière version de git-for-Windows (2.5.3) comprend désormais:
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)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é:
Cela donne toujours:
Si je définis un npp.bat comprenant:
et je tape:
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!Ou si vous êtes dans un système 64 bits:
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/sh
script shell ( ) , pas un script DOS.Donc, ce qui fonctionne, c'est:
avec
C:/prog/git/npp.bat
:ou
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'
-multiInst
option '), 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 legit\bin
répertoire à laPATH
variable 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]\cmd
répertoire (ou dans n'importe quel répertoire référencé par votre variable d'environnement PATH).Voir également:
lightfire228 ajoute dans les commentaires :
la source
git config
paramètres.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.En s'appuyant sur la réponse de Darren , pour utiliser Notepad ++, vous pouvez simplement le faire (le tout sur une seule ligne):
De toute évidence, la
C:/Program Files/Notepad++/notepad++.exe
partie doit être le chemin d'accès à l'exécutable Notepad ++ sur votre système. Par exemple, cela pourrait l'êtreC:/Program Files (x86)/Notepad++/notepad++.exe
.Cela fonctionne comme un charme pour moi.
la source
Quoi qu'il en soit, je viens de jouer avec cela et j'ai trouvé que ce qui suit fonctionnait bien pour moi:
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
-m
remplacement / indique l'utilisation de plusieurs éditeurs et il n'est pas nécessaire de%*
clouer à la fin.la source
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"
fonctionne comme un charme pour moi.editor = notepad
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:
Ajoutez le dossier principal de Vim à votre chemin (clic droit sur Poste de travail → Propriétés → Avancé → Variables d'environnement )
Lance ça:
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:
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.
la source
Program Files(x86)
, vous devez évidemment changer le chemin.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
EDITOR
dans un fichier de commandes, plutôt que l'exécutable de l'éditeur réel, qui effectue les opérations suivantes:/WAIT
indique à 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 ++.la source
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).
Cela utilise Git Bash sur msysgit; Je n'ai pas essayé depuis l'invite de commande Windows (si cela fait une différence).
la source
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:
git_editor.bat
) qui contient les éléments suivants:"C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
git_editor.bat
dans monPATH
.GIT_EDITOR=git_editor.bat
Ceci fait,
git commit
etc. invoquera correctement l'exécutable gVim.REMARQUE 1: L'
--nofork
option 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.
la source
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 ...
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 ...
la source
/newinstance
avoir 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./wait
commutateur sur la ligne de commande EditPad. Vous pouvez utiliser/wait
avec ou sans/newinstance
pour 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
./wait
pointe du drapeau monsieur ... :)[core]
section de .gitconfig pour inclure la ligneeditor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance"
.Pour Atom, vous pouvez faire
et similaire pour Visual Studio Code
qui ouvrira une fenêtre de code Atom ou Visual Studio pour vous permettre de valider,
ou pour Sublime Text :
la source
Modifiez le fichier .gitconfig dans le dossier c: \ Users \ YourUser et ajoutez:
la source
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 laless
commande 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:
Vous pouvez le faire à partir de l'invite Git Bash comme suit:
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 leTERM=dumb
comme indiqué dans ce commentaire sur le rapport de bogue msysgit .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=dumb
seul et l'utiliserunset TERM
dans 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 $MYFAVORITEEDITOR
pour vous assurer que Git utilise votre éditeur préféré lorsqu'il doit en lancer un pour vous.la source
Vim / gVim fonctionne bien pour moi.
la source
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.
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
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.
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.
la source
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
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.
la source
error: cannot spawn giteditor: No such file or directory
Basé sur la suggestion de VonC , cela a fonctionné pour moi (me rendait fou):
L'omission
-wait
peut 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.la source
j'ai du faire deux suivantes pour que Git lance Notepad ++ dans Windows:
Ajoutez ce qui suit à .gitconfig:
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é.
la source
J'utilise Cygwin sous Windows, j'utilise donc:
C'est
-nw
pourno-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é.)
la source
Voici ma configuration pour utiliser Geany comme éditeur pour Git:
avec le contenu suivant dans
geany.bat
:Il fonctionne à la fois sur une console DOS et sur msysgit.
la source
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.
la source
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
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.
la source
Je préfère utiliser Emacs. L'installation peut être un peu délicate.
c:\emacs
.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.(server-start)
quelque part dans votre.emacs
fichier. Consultez la FAQ Windows d'Emacs pour savoir où placer votre.emacs
fichier.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
.la source
J'ai réussi à faire fonctionner la version de l'environnement en définissant la variable EDITOR à l'aide de guillemets et
/
:la source
Je viens d'avoir le même problème et j'ai trouvé une solution différente. Je devenais
J'ai
VISUAL=ec
, et un fichier batch appeléec.bat
sur mon chemin qui contient une ligne:Cela me permet de modifier des fichiers à partir de la ligne de commande avec
ec <filename>
, et avoirVISUAL
dé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 ungit commit
dans Process Monitor je l' ai vu regarder dans chaque dossier sur le cheminec
etec.exe
, mais pasec.bat
. J'ai ajouté une autre variable d'environnement (GIT_EDITOR=ec.bat
) et tout allait bien.la source
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:
ce qui fonctionne très bien.
la source
Cela fonctionne pour PowerShell et cmder 1.2 (lorsqu'il est utilisé avec PowerShell). En dossier
~/.gitconfig
:Comment puis-je faire de Sublime Text l'éditeur par défaut de Git?
la source
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.
la source
Atom et Windows 10
J'ai tapé ceci dans Git Bash:
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.éditeur d'atomes git git-bash windows-10
la source
Voici une solution avec Cygwin:
Si aucun chemin, ne passez aucun chemin
Si le chemin est vide, passez le chemin vide
Si le chemin n'est pas vide, convertissez-le au format Windows.
Ensuite, j'ai défini ces variables:
EDITOR permet au script de fonctionner avec Git
GIT_EDITOR permet au script de fonctionner avec les commandes Hub
La source
la source
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
:Fichier
~/script/textpad.sh
:Cette doublure fonctionne également:
Fichier
~/script/textpad.sh
(option 2):la source
Cela a fonctionné pour moi:
C'est ça!
REMARQUE: Sublime Text 3 est l'éditeur que j'ai utilisé pour cet exemple.
la source