Pregunta

Estoy probando Git en Windows.Llegué al punto de tratar de "git commit" y tengo este error:

La Terminal es tonto pero no VISUAL ni EDITOR definido.Por favor, facilite la mensaje utilizando -m o la opción-F.

Así que se me ocurrió necesito tener una variable de entorno llamada EDITOR.No hay problema.Lo puse a punto para el Bloc de notas.Que trabajado, casi.El valor predeterminado del mensaje de confirmación se abre en el Bloc de notas.Pero el Bloc de notas no admite desnudo saltos de línea.Salí y conseguí Notepad++, pero no puedo averiguar cómo llegar a Notepad++, como %EDITOR% de tal manera que trabaja con Git como se esperaba.

No estoy casada con el Notepad++.En este punto no me importa lo que el editor que uso.Yo sólo quiero ser capaz de tipo de mensajes de confirmación en un editor en lugar de la línea de comandos (con -m).

Aquellos de ustedes que usar Git en Windows:¿Qué herramienta utilizas para editar tus mensajes de confirmación, y ¿qué tenemos que hacer para que funcione?

¿Fue útil?

Solución

Actualización de septiembre de 2015 (6 años después)

El la última versión de git-para-Windows (2.5.3) ahora incluye:

Mediante la configuración de git config core.editor notepad, los usuarios ahora puede utilizar notepad.exe como su editor por defecto.
La configuración de git config format.commitMessageColumns 72 será recogido por el bloc de notas de contenedor y el ajuste de línea en el mensaje de confirmación después de que el usuario edita.

Ver cometer 69b301b por Johannes Schindelin (dscho).

Y Git 2.16 (Q1 2018) mostrará un mensaje para indicar al usuario que se está a la espera de que el usuario termine de editar cuando desove de un editor, en caso de que el editor de se abre una ventana oculta o en algún lugar oscuro y el usuario se perdido.

Ver cometer abfb04d (07 Dic 2017), y cometer a64f213 (29 de Noviembre de 2017) por Lars Schneider (larsxschneider).
Contribuido por: Junio C Hamano (gitster).
(Fusionado por Junio C Hamano -- gitster -- en cometer 0c69a13, 19 de Dic 2017)

launch_editor():indican que Git espera la entrada del usuario

Cuando una gráfica GIT_EDITOR es generado por un comando Git que se abre y espera la entrada del usuario (por ejemplo,"git rebase -i"), entonces la ventana del editor puede ser oscurecida por las otras ventanas.
El usuario puede estar a la izquierda mirando el original Git ventana de terminal sin siquiera darse cuenta de que s/él necesita para interactuar con otra ventana antes de Git puede proceder.A este usuario Git aparece colgando.

Imprimir un mensaje que Git está a la espera de editor de entrada en el original terminal y deshacerse de él cuando el editor devuelve, si el terminal soporta el borrado de la última línea


Respuesta Original

Acabo de probar con git versión 1.6.2.msysgit.0.186.gf7512 y el Bloc de notas++5.3.1

Yo prefiero no tiene que establecer una variable EDITOR, así que he intentado:

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

Que siempre da:

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 defino un pnp.bate incluyendo:

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

y yo tipo:

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

Sólo funciona a partir de las DOS de la sesión, pero no desde el git shell.
(no es que con el núcleo.el editor de configuración del mecanismo, una secuencia de comandos con "start /WAIT..."en él no iba a funcionar, pero sólo abrir una nueva ventana de DOS)


Bennett respuesta menciona la posibilidad de evitar la adición de una secuencia de comandos, pero para hacer referencia directamente el programa en sí entre comillas simples.Nota de la dirección de las barras!Uso / NO \ para separar las carpetas en el nombre de ruta!

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

O si usted está en un sistema de 64 bits:

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

Pero yo prefiero usar una secuencia de comandos (ver más abajo):de esa manera no se puede jugar con diferentes caminos o en las diferentes opciones sin tener que registrarse de nuevo un git config.


La solución real (con una secuencia de comandos) fue darnos cuenta de que:
a lo que te refieres en el archivo de configuración es en realidad una shell/bin/sh) de secuencia de comandos, no una secuencia de comandos de DOS.

Así que lo que funciona es:

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

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

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

o

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

Con esa configuración, que puedo hacer 'git config --global --edit"de DOS o Git Shell, o que puedo hacer 'git rebase -i ..."de DOS o Git Shell.
Bot comandos de desencadenar una nueva instancia del bloc de notas++ (de ahí el -multiInst'opción), y esperar a que instancia a ser cerrado antes de ir.

Tenga en cuenta que yo sólo uso '/', no \'.Y Yo instalado msysgit el uso de la opción 2. (Agregar el git\bin directorio para la PATH variable de entorno, pero sin reemplazar algunos incorporado en las herramientas de windows)

El hecho de que el notepad++ contenedor se llama .bat no es importante.
Sería mejor nombre 'npp.sh" y ponerlo en el [git]\cmd directorio pesar de (o en cualquier directorio referenciado por la variable de entorno PATH).


Vea también:


lightfire228 agrega en los comentarios:

Para cualquiera que tenga un problema donde N++ simplemente abre un archivo en blanco, y git no tomar el mensaje de confirmación, ver "Abortar cometer debido a los vacíos de mensaje":cambiar su .bat o .sh archivo de decir:

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

Que dirá el notepad++ para abrir la temp cometer archivo, en lugar de un blanco de nuevo.

Otros consejos

Edificio en Darren respuesta, para utilizar el Bloc de notas++ usted puede simplemente hacer esto (todo en una línea):

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

Obviamente el C:/Program Files/Notepad++/notepad++.exe la parte debe ser la ruta de acceso al Bloc de notas++ ejecutable en su sistema.Por ejemplo, podría ser C:/Program Files (x86)/Notepad++/notepad++.exe .

Funciona como un encanto para mí.

De todos modos, he estado jugando con este y encontrado el siguiente trabajo muy bien para mí:

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

No creo CMD le gusta comillas simples por lo que debe utilizar comillas dobles "para especificar el espacio de cadena incrustada argumento".

Cygwin (que creo que es la plataforma subyacente para Git Bash) por otro lado le gusta tanto ' y ";puede especificar un CMD-como caminos, el uso de / en lugar de \, siempre y cuando la cadena es citado es decir,en este ejemplo, el uso de comillas simples.

El -m overrides/indica que el uso de múltiples editores y no hay necesidad de un %* colgada en la final.

Editar: Después de actualizar a vim 7.3, he llegado a la conclusión de que el más limpio y más fácil manera de hacer esto es:

  1. Agregar Vim de la carpeta principal de tu ruta (clic Derecho en Mi pc -> Propiedades -> opciones Avanzadas -> Variables de Entorno)

  2. Ejecutar esto:git config --global core.editor "gvim --nofork '%*'"

Si lo haces de esta manera, entonces estoy bastante seguro de que va a trabajar con cygwin así.

Original respuesta:

Incluso con un par de vim relacionados con las respuestas, yo estaba teniendo problemas para conseguir que funcione con gvim en Windows (aunque no el uso de un archivo de proceso por lotes o %EDITOR de% o cygwin).

Lo que finalmente he llegado es agradable y limpio, y se nutre de algunas de las soluciones aquí:

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

Uno de gotcha que me tomó un rato, es que estos no son el estilo de Windows barras diagonales, que son normales barras diagonales.

Notepad++ funciona bien, aunque yo elijo seguir con el Bloc de notas, -m, o, incluso, a veces, la incorporada en "editar".

El problema que se están encontrando con el Bloc de notas++ está relacionada con la forma de git es lanzar el ejecutable del editor.Mi solución a esto es para establecer que el EDITOR de un archivo de proceso por lotes, en lugar de la real ejecutable del editor, que hace lo siguiente:

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

/ESPERA le dice a la línea de comandos de sesión a detener hasta que se sale de la aplicación, usted será capaz de editar el contenido de su corazón mientras git feliz espera para usted.%* pasa todos los argumentos para el archivo de proceso por lotes a través de Notepad++.

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

Wordpad!

Estoy feliz usando vim, pero ya estoy tratando de introducir Git a la empresa en la que quería algo que nos gustaría a todos tener, y se encontró que el Wordpad parece que funciona bien (es decir,Git no espere hasta que haya terminado la edición y cerrar la ventana).

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

Que el uso de Git Bash en msysgit;No lo he probado desde el símbolo del sistema de Windows (si es que hay alguna diferencia).

Yo también uso Cygwin en Windows, pero con gvim (frente a la terminal basado en vim).

Para hacer este trabajo, he hecho lo siguiente:

  1. Crea una línea de archivo de proceso por lotes (denominado git_editor.bat) que contiene los siguientes:
    "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Coloca git_editor.bat en mi PATH.
  3. Conjunto GIT_EDITOR=git_editor.bat

Con este hecho, git commit, etc.va a invocar correctamente el gvim ejecutable.

NOTA 1:El --nofork opción a gvim asegura que bloquea hasta que el mensaje de confirmación que ha sido escrito.

NOTA 2:Las comillas alrededor de la ruta de acceso a gvim es necesario si usted tiene espacios en la ruta.

NOTA 3:Las comillas alrededor de "%*" son necesarios sólo en el caso de git pasa una ruta de archivo con espacios.

Gracias a la comunidad ...y un poco de investigación he podido obtener mi editor favorito, EditPadPro, para trabajar como núcleo editor con msysgit 1.7.5.GIT y TortoiseGit v1.7.3.0 más de WinXP SP3 ...

Siguiendo el consejo anterior, he añadido la ruta de acceso a un script en bash para el editor de código ...

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

Sin embargo, después de varios intentos fallidos en el mencionado soluciones ...Finalmente fui capaz de conseguir este trabajo.Por EditPadPro de la documentación, añadiendo el "/newinstance' bandera permitiría a la shell que esperar para que el editor de entrada ....

El '/newinstance'bandera fue la clave en mi caso ...

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

Este es el 1 síntoma de asuntos mayores.En particular, que tiene algo de ajuste PLAZO=tonto.Otras cosas que no funcionan correctamente son el less comando que dice que usted no tiene un completo y funcional terminal.Parece que esto es más comúnmente causada por tener un conjunto de términos para algo en el mundial de windows variables de entorno.Para mí, el problema surgió cuando he instalado Strawberry Perl poco de información acerca de esto está en la msysgit error de este problema así como varias soluciones.

La primera solución es fijar en tu ~/.bashrc añadiendo:

export TERM=msys

Usted puede hacer esto desde el Git BASH así:

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

La otra solución que en definitiva es lo que yo hice, porque no me importa acerca de Strawberry Perl de las razones para añadir PLAZO=tonto para mi la configuración del entorno es ir y quitar el TÉRMINO=tonto como dirigida en este comentario sobre la msysgit informe de error.

Control Panel/Sistema/Opciones Avanzadas/Medioambiente Variables...(o similar, dependiendo de la la versión de Windows) es donde pegajoso se establecen variables de entorno en Windows.Por defecto, el PLAZO no conjunto.Si el PLAZO está establecido en no, entonces usted (o uno de los programas que usted ha instalado - por ejemplo.Strawberry Perl) ha se estableció.Eliminar esa opción, y usted debe estar bien.

Asimismo, si usa Strawberry Perl y se preocupan por el CPAN cliente o algo así, puede dejar el TERM=dumb solo y uso unset TERM en su ~/.bashrc fichero que se va a tener un efecto similar a la configuración de un explícito mandato como anteriormente.

Por supuesto, todas las otras soluciones son correctas que usted puede utilizar git config --global core.editor $MYFAVORITEEDITOR para asegurarse de que git utiliza tu editor favorito cuando se necesita para lanzar uno para usted.

Para Átomo usted puede hacer

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

y similares para VSCode

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

que se abra un Átomo o VSCode la ventana para que se comprometa a través de,

o para Sublime

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

Edit .gitconfig archivo en c:\Users\YourUser carpeta y agregar:

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

Vim/Gvim funciona bien para mí.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

Yo había PortableGit 1.6 funciona correctamente, pero después de actualizar a PortableGit-1.7 versión de windows tenido problemas.Algunos de los comandos de git se abre Notepad++.exe bien, pero algunas no, especialmente git rebase se comporta de forma diferente.

Problema es que algunos se ejecutan los comandos de windows cmd proceso de algunos usan unix cmd proceso.Quiero dar inicio atributos para el Bloc de notas++ editor, por lo que necesitan tener un script personalizado.Mi solución es esta.

1) Crear un script para ejecutar un editor de texto apropiado.Guión parece raro, pero maneja windows y unix variación.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) Conjunto global core.el editor de variables La secuencia de comandos se guardan en git/cmd carpeta para su ya de por sí en un gitconsole camino, este es obligatoria como ruta de acceso completa puede no funcionar correctamente.

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

Ahora puedo correr git commit-a y git rebase-i master los comandos.Darle una oportunidad si usted tiene problemas en Git, herramienta de windows.

Puedo usar git en múltiples plataformas, y me gusta usar la misma configuración de git en todos ellos.(De hecho, tengo todos mis archivos de configuración bajo el control de la liberación con git, y poner un repositorio de git clone en cada máquina.) La solución que se me ocurrió es este:

Me puse mi editor a giteditor

git config --global core.editor giteditor

Entonces puedo crear un enlace simbólico llamado giteditor que hay en mi CAMINO.(Tengo personal bin directorio, pero en cualquier lugar en el CAMINO obras.) Que enlace punto a mi actual editor de la elección.En máquinas diferentes y de diferentes plataformas, uso de diferentes editores, así que esto significa que no tengo que cambiar mi universal git de configuración (.gitconfig), sólo el vínculo que giteditor puntos.

Los enlaces simbólicos son manejados por cada sistema operativo yo sepa, a pesar de que pueden utilizar los diferentes comandos.Para Linux, se utiliza ln -s.Para Windows, utilice el cmd construido-en mklink.Tienen diferentes sintaxis (lo que usted debe mirar hacia arriba), pero todo funciona de la misma manera, realmente.

Basado en VonC sugerencia, esto funcionó para mí (me estaba volviendo loco):

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

La omisión de -wait puede causar problemas, especialmente si usted está trabajando con gerrit y cambiar los identificadores de ser copiado manualmente en la parte inferior de su mensaje de commit

Esta es mi configuración para utilizar Geany como editor de git:

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

con el siguiente contenido en geany.bat :

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

Esto funciona tanto en la consola de DOS y msysgit.

Puedo usar Cygwin en Windows, por lo que yo uso:

export EDITOR="emacs -nw"

El -nw es para no-windows, es decir,dígale a Emacs no para intentar usar X11.

El Emacs de combinaciones de teclas no funcionan para mí desde un shell de Windows, así que yo sólo uso esta de un Cygwin shell...(rxvt recomendado).

Yo prefiero usar emacs.Conseguir que se establezca, puede ser un poco complicado.

  1. Descargar emacs y descomprimirlo en algún lugar como c:\emacs.
  2. Ejecutar c:\emacs\bin\addpm.exe.Usted necesita un clic derecho y "Ejecutar como Administrador" si estás usando Windows Vista o superior.Esto pone a la ejecutables en su camino.
  3. Agregar (server-start) en algún lugar de su .emacs archivo.Ver el Emacs Windows FAQ para consejos sobre dónde colocar su .emacs archivo.
  4. git config --global core.editor emacsclientw

Git ahora abrir archivos dentro de un proceso de emacs.Usted tendrá que ejecutar ese proceso existente de forma manual desde c:\emacs\bin\runemacs.exe.

He tenido la dificultad de conseguir un git para cooperar con wordpad, KomodoEdit y casi todos los otros editor que yo le doy.Más abierto para su edición, pero git claramente no espere a que el guardar/cerrar a suceder.

Como una muleta, he estado haciendo, es decir,

git commit -m "Fixed the LoadAll method"

para mantener las cosas en movimiento.Tiende a mantener a mi los mensajes de confirmación un poco más corto de lo que deberían ser, pero claramente hay algo de trabajo por hacer en la versión de Windows de git.

El GitGUI también no es tan mala.Se necesita un poco de orientación, pero después de eso, funciona bastante bien.

Que debo hacer ambos de los siguientes para obtener git para iniciar el bloc de notas++ en windoze:

-agregar el siguiente .gitconfig:

editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin

-modificar el acceso directo para iniciar el git bash shell para ejecutar como administrador y, a continuación, utilizarlo para lanzar el git bash shell.Suponía que el contexto de la entrada de menú "Git Bash aquí" no era el lanzamiento de pnp con los permisos necesarios.

Después de hacer tanto de lo anterior, se trabajó.

Parece como si Git no encontrar el editor si hay espacios en la ruta.Así que usted tendrá que poner el archivo de proceso por lotes mencionados en Patricio respuesta en un no-espacio en blanco camino.

Yo he tenido el mismo problema y encontrar una solución diferente.Me estaba poniendo

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

Tengo VISUAL=ec, y un archivo por lotes llamado ec.bat en mi ruta de acceso que contiene una sola línea:

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

Esto me permite editar los archivos desde la línea de comandos con ec <filename>, y tener visual set significa que la mayoría de los unixy programas recogerlo demasiado.Git parece buscar la ruta de acceso diferente a mis otros comandos - cuando miré a un git commit en ProcMon Vi la mirada en cada una de las carpetas de la ruta de acceso para ec y para ec.exe, pero no para ec.bat.He añadido otra variable de entorno (GIT_EDITOR=ec.bat) y todo fue bien.

Me las arreglé para conseguir la versión de entorno de trabajo mediante la configuración de la variable del EDITOR de uso de citas y /:

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

Estoy usando GitHub para Windows, que es una visual agradable opción.Pero yo también prefiero la línea de comandos, así que para hacer que funcione cuando abro un repositorio en Git shell solo he puesto lo siguiente:

git config --global core.editor vim

lo que funciona muy bien.

Esto funciona para Powershell y cmder-1.2 (cuando se utiliza con powershell).En ~/.gitconfig

[core]
    editor = 'c:/program files/sublime text 3/subl.exe' -w

¿Cómo puedo realizar la Sublime Text editor predeterminado de Git?

Resucitar un hilo viejo, pero he encontrado una forma sencilla solución publicado aquí - aunque puede haber un error en la ruta en la que tienes que copiar el "subl" archivo dado por el autor.Estoy con Win 7 x64 y tuve que poner el "subl" archivo en mi /Git/cmd/ carpeta para que funcione.Funciona como un encanto, aunque.

ATOM y Windows 10

  1. Clic con el botón derecho del Átomo icono en el escritorio y haga clic en propiedades.
  2. Copian el "Iniciar en" la ruta de ubicación
  3. Se veía allí con el explorador de windows y encontrado "atom.exe".
  4. Escrito esta en el git bash:

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

Nota:He cambiado todos los \ para / .He creado un .bashrc en mi directorio home y usados / para establecer mi directorio home y funcionó, así que supuse / va a ser el camino a seguir.

Cuando se utiliza de una forma remota homedrive (samba, nfs, ...), sus ~/.git carpeta está compartida acros todos los sistemas que puede llevar a varios problemas.Por lo tanto yo prefiero una secuencia de comandos para determinar el derecho del editor de la derecha del sistema:

#!/usr/bin/perl
# Detect which system I'm on and choose the right editor
$unamea = `uname -a`;
if($unamea =~ /mingw/i){
    if($unamea =~ /devsystem/i){#Check hostname
        exec('C:\Program Files (x86)\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
    if($unamea =~ /testsystem/i){
        exec('C:\Program Files\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
}
$MCEDIT=`which mcedit`;
if($MCEDIT =~ /mcedit/){
    exec($MCEDIT, @ARGV);
}
$NANO=`which nano`;
if($NANO =~ /nano/){
    exec($NANO, @ARGV);
}
die "You don't have a suitable editor!\n";

Uno podría considerar un simple script de shell pero he usado perl perl es se entregan con msysgit und tu unixoid sistemas ofrecen una así.Poner el script en /home/username/bin, el cual debe ser agregado a PATH en .bashrc o .profile.Una vez añadido con git config --global core.editor giteditor.pl usted tiene el derecho de editor, estés donde estés.

Este es trabajo para mí, usar Cygwin y Textpad 6 (EDICIÓN:también trabajo con Textpad 5 tienes que hacer el cambio obvio en la secuencia de comandos), y es de suponer que el modelo podría ser utilizado para otros editores así:

~/.gitconfig:

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

~/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"

Este one-liner funciona así:

~/script/textpad.sh (opción 2):

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

Esto funcionó para mí:

  1. Agregar el directorio que contiene el ejecutable del editor para su CAMINO variable.(por ejemplo, "C:\Program Files\Sublime Text 3\")
  2. Reinicie su computadora.
  3. Cambiar el núcleo.editor global git variable el nombre del ejecutable del editor sin la extensión '.exe" (por ejemplo,git config --global core.editor sublime_text)

Eso es todo!

NOTA: Sublime Text 3 es el editor que he usado para este ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top