Estoy probando Git en Windows . Llegué al punto de intentar "git commit" y recibí este error:
La terminal es tonta pero no se ha definido VISUAL ni EDITOR. Proporcione el mensaje utilizando la opción -m o -F.
Entonces descubrí que necesito tener una variable de entorno llamada EDITOR. No hay problema. Lo configuré para apuntar al Bloc de notas. Eso funcionó, casi. El mensaje de confirmación predeterminado se abre en el Bloc de notas. Pero el Bloc de notas no admite avances de línea desnuda. Salí y obtuve Notepad ++ , pero no puedo entender cómo configurar Notepad ++ como %EDITOR%
tal de manera que funcione con Git como se esperaba.
No estoy casado con Notepad ++. En este punto no me importa qué editor uso. Solo quiero poder escribir mensajes de confirmación en un editor en lugar de la línea de comando (con -m
).
Aquellos de ustedes que usan Git en Windows: ¿Qué herramienta usan para editar sus mensajes de confirmación y qué tuvieron que hacer para que funcione?
git config core.editor notepad
ahora es suficiente. Vea mi respuesta actualizada a continuación .Respuestas:
Actualización de septiembre de 2015 (6 años después)
La última versión de git-for-Windows (2.5.3) ahora incluye:
Ver commit 69b301b por Johannes Schindelin (
dscho
) .Y Git 2.16 (Q1 2018) mostrará un mensaje para decirle al usuario que está esperando que el usuario termine de editar al generar un editor, en caso de que el editor se abra en una ventana oculta o en algún lugar oscuro y el usuario se pierda.
Ver commit abfb04d (07 de diciembre de 2017) y commit a64f213 (29 de noviembre de 2017) por Lars Schneider (
larsxschneider
) .Ayudado por: Junio C Hamano (
gitster
) .(Fusionada por Junio C Hamano -
gitster
- en commit 0c69a13 , 19 dic 2017)Respuesta original
Lo acabo de probar con git versión 1.6.2.msysgit.0.186.gf7512 y Notepad ++ 5.3.1
Prefiero no tener que establecer una variable EDITOR, así que intenté:
Eso siempre da:
Si defino un npp.bat que incluye:
y escribo:
Simplemente funciona desde la sesión de DOS, pero no desde el shell git .
(no es que con el mecanismo de configuración core.editor, una secuencia de comandos con "
start /WAIT...
" no funcione, sino que solo abra una nueva ventana de DOS)La respuesta de Bennett menciona la posibilidad de evitar agregar un script, pero hacer referencia directa al programa en sí entre comillas simples . Tenga en cuenta la dirección de las barras! ¡Use
/
NO\
para separar carpetas en el nombre de la ruta!O si está en un sistema de 64 bits:
Pero prefiero usar un script (ver más abajo): de esa manera puedo jugar con diferentes rutas o diferentes opciones sin tener que registrarme nuevamente a
git config
.La solución real (con un script) fue darse cuenta de que: a
lo que se refiere en el archivo de configuración es en realidad un
/bin/sh
script de shell ( ) , no un script de DOS.Entonces, lo que funciona es:
con
C:/prog/git/npp.bat
:o
Con esa configuración, puedo hacer '
git config --global --edit
' desde DOS o Git Shell, o puedo hacer 'git rebase -i ...
' desde DOS o Git Shell.Los comandos de Bot activarán una nueva instancia de notepad ++ (de ahí el
-multiInst
opción ') y esperarán a que se cierre esa instancia antes de continuar.Tenga en cuenta que solo uso '/', no
\
'. E instalé msysgit usando la opción 2. (Agregue elgit\bin
directorio a laPATH
variable de entorno, pero sin anular algunas herramientas integradas de Windows)El hecho de que el contenedor notepad ++ se llame .bat no es importante.
Sin embargo, sería mejor nombrarlo 'npp.sh' y ponerlo en el
[git]\cmd
directorio (o en cualquier directorio al que haga referencia la variable de entorno PATH).Ver también:
lightfire228 agrega en los comentarios :
fuente
git config
configuración.dir /X
equivalente abreviado : "PROGRA~2
" para "Program Files (x86)
", que es un buen hábito para usar cuando se utilizan herramientas compatibles con plataformas cruzadas en Windows, que le permite aplastar el espacio en blanco.Basándose en la respuesta de Darren , para usar Notepad ++ simplemente puede hacer esto (todo en una línea):
Obviamente, la
C:/Program Files/Notepad++/notepad++.exe
parte debe ser la ruta al ejecutable Notepad ++ en su sistema. Por ejemplo, podría serC:/Program Files (x86)/Notepad++/notepad++.exe
.Funciona como un encanto para mí.
fuente
De todos modos, acabo de jugar con esto y descubrí que lo siguiente funciona bien para mí:
No creo que a CMD le gusten las comillas simples, por lo que debe usar comillas dobles "para especificar el argumento de cadena incrustado en el espacio".
Cygwin (que creo que es la plataforma subyacente para Git's Bash), por otro lado, le gustan ambos
'
y"
; puede especificar una ruta similar a CMD, utilizando en/
lugar de\
, siempre que se cite la cadena, es decir, en este caso, utilizando comillas simples.La
-m
anulación / indica el uso de múltiples editores y no hay necesidad de un%*
agregado al final.fuente
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"
Funciona como un encanto para mí.editor = notepad
Editar: después de actualizar a Vim 7.3, he llegado a la conclusión de que la forma más limpia y fácil de hacer esto es:
Agregue la carpeta principal de Vim a su ruta (haga clic con el botón derecho en Mi PC → Propiedades → Avanzado → Variables de entorno )
Ejecuta esto:
Si lo hace de esta manera, estoy bastante seguro de que también funcionará con Cygwin.
Respuesta original:
Incluso con un par de respuestas relacionadas con Vim, estaba teniendo problemas para que esto funcione con gVim en Windows (mientras no usaba un archivo por lotes o% EDITOR% o Cygwin).
A lo que finalmente llegué es agradable y limpio, y se basa en algunas de las soluciones aquí:
Un problema que me llevó un tiempo es que estas no son las barras invertidas al estilo de Windows. Son cortes diagonales normales.
fuente
Program Files(x86)
, entonces debe cambiar la ruta obviamente.Notepad ++ funciona bien, aunque elijo seguir con Notepad, -m, o incluso a veces la "edición" incorporada.
El problema que encuentra al usar Notepad ++ está relacionado con cómo Git está iniciando el ejecutable del editor. Mi solución a esto es establecer la variable de entorno
EDITOR
en un archivo por lotes, en lugar del ejecutable real del editor, que hace lo siguiente:/WAIT
le dice a la sesión de línea de comando que se detenga hasta que la aplicación se cierre, por lo que podrá editar el contenido de su corazón mientras Git lo espera felizmente. % * pasa todos los argumentos al archivo por lotes a Notepad ++.fuente
WordPad !
Estoy feliz de usar Vim, pero como estoy tratando de presentarle a Git a la compañía, quería algo que todos tuviéramos, y descubrí que WordPad parece funcionar bien (es decir, Git espera hasta que termine de editar y cerrar la ventana).
Eso está usando Git Bash en msysgit; No lo he intentado desde el símbolo del sistema de Windows (si eso hace alguna diferencia).
fuente
También uso Cygwin en Windows, pero con gVim (a diferencia del terminal basado en Vim ).
Para que esto funcione, he hecho lo siguiente:
git_editor.bat
) que contiene lo siguiente:"C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
git_editor.bat
en miPATH
.GIT_EDITOR=git_editor.bat
Con esto hecho,
git commit
etc. invocará correctamente el ejecutable de gVim.NOTA 1: La
--nofork
opción de gVim asegura que se bloquee hasta que se haya escrito el mensaje de confirmación.NOTA 2: Las comillas alrededor de la ruta a gVim son necesarias si tiene espacios en la ruta.
NOTA 3: Las comillas alrededor de "% *" son necesarias en caso de que Git pase una ruta de archivo con espacios.
fuente
Gracias a la comunidad de Stack Overflow ... y un poco de investigación pude obtener mi editor favorito, EditPad Pro , funcionara como editor principal con msysgit 1.7.5.GIT y TortoiseGit v1.7.3.0 sobre Windows XP SP3. ..
Siguiendo el consejo anterior, agregué la ruta a un script Bash para el editor de código ...
Sin embargo, después de varios intentos fallidos en las soluciones mencionadas anteriormente ... finalmente pude hacer que esto funcionara. Según la documentación de EditPad Pro, agregar el indicador '/ newinstance' permitiría que el shell esperara la entrada del editor ...
El indicador ' / newinstance ' fue la clave en mi caso ...
fuente
/newinstance
para tener exactamente una barra diagonal. Esto es bastante normal para las aplicaciones de Windows. Si está invocando EditPad desde un shell de UNIX, necesitará usar cualquier mecanismo que ofrezca su shell para escapar de la barra diagonal, de modo que no vea el interruptor como una ruta absoluta y pase una barra diagonal literal a la línea de comando de EditPad./wait
interruptor en la línea de comando de EditPad. Puede usar/wait
con o sin/newinstance
controlar si se debe abrir una nueva ventana EditPad o si se debe reutilizar una ventana existente. El proceso iniciado por su script esperará a que se cierre el archivo independientemente de si se creó o reutilizó una ventana. EditPad Pro 6 y anteriores no son compatibles/wait
./wait
punta de la bandera, señor ... :)[core]
sección de .gitconfig para incluir la líneaeditor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance"
.Para Atom puedes hacer
y similares para Visual Studio Code
que abrirá una ventana de Atom o Visual Studio Code para que pueda confirmar,
o para texto sublime :
fuente
Edite el archivo .gitconfig en la carpeta c: \ Users \ YourUser y agregue:
fuente
Este es el síntoma de problemas mayores. Cabe destacar que tienes algo ambientado
TERM=dumb
. Otras cosas que no funcionan correctamente son elless
comando que dice que no tiene una terminal completamente funcional.Parece que esto es más comúnmente causado por tener TERM configurado en algo en las variables de entorno globales de Windows. Para mí, el problema surgió cuando instalé Strawberry Perl, algo de información sobre esto está en el error de msysgit para este problema , así como varias soluciones.
La primera solución es arreglarlo en su ~ / .bashrc agregando:
Puede hacer esto desde el indicador de Git Bash de la siguiente manera:
La otra solución, que en definitiva es lo que hice porque no me importa acerca de las razones de fresa Perl para añadir
TERM=dumb
a mis valores de entorno, es ir y retirar laTERM=dumb
tan indica en este comentario en el informe de error de msysgit .Del mismo modo, si usa Strawberry Perl y se preocupa por el cliente CPAN o algo así, puede dejarlo
TERM=dumb
solo y usarunset TERM
en su archivo ~ / .bashrc, lo que tendrá un efecto similar al establecer un término explícito como el anterior.Por supuesto, todas las otras soluciones son correctas, ya que puede usarlas
git config --global core.editor $MYFAVORITEEDITOR
para asegurarse de que Git use su editor favorito cuando necesite lanzar uno para usted.fuente
Vim / gVim funciona bien para mí.
fuente
Tenía PortableGit 1.6 funcionando bien, pero después de actualizar a la versión PortableGit 1.7 de Windows, tuve problemas. Algunos de los comandos de Git abren el Notepad ++. Exe bien, pero otros no, especialmente Git rebase se comporta de manera diferente.
El problema es que algunos comandos ejecutan el proceso cmd de Windows y algunos usan el proceso cmd de Unix. Quiero dar atributos de inicio al editor Notepad ++, por lo que necesito tener un script personalizado. Mi solución es esta.
Cree un script para ejecutar un editor de texto apropiado. El script se ve raro, pero maneja tanto la variación de Windows como la de Unix.
c: /PortableGit/cmd/git-editor.bat
Establecer la variable global core.editor
El script se guardó en la carpeta git / cmd, por lo que ya está en una ruta gitconsole. Esto es obligatorio ya que una ruta completa puede no funcionar correctamente.
Ahora puedo ejecutar los comandos maestros git commit -a y git rebase -i master . Pruébelo si tiene problemas con la herramienta Git Windows.
fuente
Uso Git en múltiples plataformas, y me gusta usar la misma configuración de Git en todas ellas. (De hecho, tengo todos mis archivos de configuración bajo control de lanzamiento con Git, y puse un clon de repositorio de Git en cada máquina). La solución que se me ocurrió es esta:
Puse mi editor en giteditor
Luego creo un enlace simbólico llamado giteditor que está en mi RUTA . (Tengo un directorio bin personal , pero funciona en cualquier parte de la RUTA ). Ese enlace apunta a mi editor actual de elección. En diferentes máquinas y diferentes plataformas, uso diferentes editores, por lo que esto significa que no tengo que cambiar mi configuración universal de Git ( .gitconfig ), solo el enlace que giteditor apunta .
Los enlaces simbólicos son manejados por todos los sistemas operativos que conozco, aunque pueden usar diferentes comandos. Para Linux, usa ln -s . Para Windows, se utiliza el cmd incorporada MKLINK . Tienen diferentes sintaxis (que debe buscar), pero todo funciona de la misma manera, realmente.
fuente
error: cannot spawn giteditor: No such file or directory
Según la sugerencia de VonC , esto funcionó para mí (me estaba volviendo loco):
Omitir
-wait
puede causar problemas, especialmente si está trabajando con Gerrit y cambia los identificadores que deben copiarse manualmente en la parte inferior de su mensaje de confirmación.fuente
Que tenía que hacer tanto de lo siguiente para obtener Git para lanzar Notepad ++ en Windows:
Agregue lo siguiente a .gitconfig:
Modifique el acceso directo para iniciar el shell Git Bash para que se ejecute como administrador, y luego use eso para iniciar el shell Git Bash. Supuse que la entrada del menú contextual "Git Bash here" no estaba iniciando Notepad ++ con los permisos requeridos.
Después de hacer las dos cosas anteriores, funcionó.
fuente
Yo uso Cygwin en Windows, así que uso:
El
-nw
es parano-windows
, es decir, decirle a Emacs que no intente usar X Window .Las combinaciones de teclas de Emacs no funcionan para mí desde un shell de Windows, por lo que solo usaría esto desde un shell de Cygwin ... ( se recomienda rxvt ).
fuente
Esta es mi configuración para usar Geany como editor de Git:
con el siguiente contenido en
geany.bat
:Funciona tanto en una consola de DOS como en msysgit.
fuente
Parece que Git no encontrará el editor si hay espacios en la ruta. Por lo tanto, deberá colocar el archivo por lotes mencionado en la respuesta de Patrick en una ruta que no sea un espacio en blanco.
fuente
He tenido dificultades para que Git coopere con WordPad , Komodo Edit y casi todos los demás editores que le doy. La mayoría está abierta para edición, pero Git claramente no espera a que suceda guardar / cerrar.
Como muleta, solo he estado haciendo ie
para mantener las cosas en movimiento. Tiende a mantener mis mensajes de confirmación un poco más cortos de lo que probablemente deberían ser, pero claramente hay algo de trabajo por hacer en la versión de Windows de Git.
El GitGUI tampoco es tan malo. Se necesita un poco de orientación, pero después de eso, funciona bastante bien.
fuente
Prefiero usar Emacs. Configurarlo puede ser un poco complicado.
c:\emacs
.c:\emacs\bin\addpm.exe
. Debe hacer clic con el botón derecho y "Ejecutar como administrador" si está utilizando Windows Vista o superior. Esto pondrá los ejecutables en tu camino.(server-start)
en algún lugar de tu.emacs
archivo. Consulte las preguntas frecuentes de Emacs Windows para obtener consejos sobre dónde colocar su.emacs
archivo.git config --global core.editor emacsclientw
Git ahora abrirá archivos dentro de un proceso Emacs existente. Deberá ejecutar ese proceso existente manualmente
c:\emacs\bin\runemacs.exe
.fuente
Logré que la versión del entorno funcionara configurando la variable EDITOR usando comillas y
/
:fuente
Acabo de tener el mismo problema y encontré una solución diferente. Yo estaba consiguiendo
Tengo
VISUAL=ec
, y un archivo por lotes llamadoec.bat
en mi ruta que contiene una línea:Esto me permite editar archivos desde la línea de comandos con
ec <filename>
, y tenerloVISUAL
configurado significa que la mayoría de los programas de Unixy también lo recogen. Sin embargo, Git parece buscar la ruta de manera diferente a mis otros comandos: cuando mirégit commit
en Process Monitor , vi que buscaba en cada carpeta de la ruta porec
y paraec.exe
, pero no paraec.bat
. Agregué otra variable de entorno (GIT_EDITOR=ec.bat
) y todo estuvo bien.fuente
Estoy usando GitHub para Windows, que es una buena opción visual. Pero también prefiero la línea de comandos, por lo que para que funcione cuando abro un repositorio en un shell Git, simplemente configuro lo siguiente:
que funciona muy bien
fuente
Esto funciona para PowerShell y cmder 1.2 (cuando se usa con PowerShell). En archivo
~/.gitconfig
:¿Cómo puedo hacer que Sublime Text sea el editor predeterminado para Git?
fuente
Encontré una solución hermosamente simple publicada aquí , aunque puede haber un error en la ruta en la que tiene que copiar el archivo "subl" proporcionado por el autor.
Estoy ejecutando Windows 7 x64, y tuve que poner el archivo "subl" en mi
/Git/cmd/
carpeta para que funcione.Sin embargo, funciona de maravilla.
fuente
Atom y Windows 10
Escribí esto en Git Bash:
Nota: cambié todo
\
por/
. Creé un .bashrc en mi directorio de inicio y solía/
configurar mi directorio de inicio y funcionó, así que supuse/
que sería el camino a seguir.editor de átomos git git-bash windows-10
fuente
Aquí hay una solución con Cygwin:
Si no hay ruta, no pase ninguna ruta
Si la ruta está vacía, pase la ruta vacía
Si la ruta no está vacía, conviértala al formato de Windows.
Luego establezco estas variables:
EDITOR permite que el script funcione con Git
GIT_EDITOR permite que el script funcione con comandos de Hub
Fuente
fuente
Esto está funcionando para mí usando Cygwin y TextPad 6 (EDITAR: también está trabajando con TextPad 5 siempre que realice el cambio obvio en el script), y presumiblemente el modelo podría usarse también para otros editores:
Archivo
~/.gitconfig
:Archivo
~/script/textpad.sh
:Este one-liner también funciona:
Archivo
~/script/textpad.sh
(opción 2):fuente
Esto funcionó para mí:
¡Eso es!
NOTA: Sublime Text 3 es el editor que utilicé para este ejemplo.
fuente