repositorio password limpiar crear consola configurar comandos and windows git cygwin editor

windows - password - git config--global



¿Cómo puedo configurar un editor para que funcione con Git en Windows? (30)

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

La terminal es tonta pero no se define VISUAL ni EDITOR. Por favor proporcione el mensaje usando la opción -m o -F.

Entonces me di cuenta de que necesito tener una variable de entorno llamada EDITOR. No hay problema. Lo puse a apuntar a 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 es compatible con fuentes de línea desnuda. Salí y obtuve Notepad++ , pero no puedo averiguar cómo configurar Notepad ++ como %EDITOR% de tal manera que funcione con Git como se esperaba.

No estoy casado con Notepad ++. En este punto no me importa qué editor utilizo. Solo quiero poder escribir mensajes de confirmación en un editor en lugar de en la línea de comandos (con -m ).

Aquellos de ustedes que usan Git en Windows: ¿Qué herramienta utilizan para editar sus mensajes de confirmación y qué tuvieron que hacer para que funcionen?


ATOM y Windows 10

  1. Haga clic derecho en el icono de Atom en el escritorio y haga clic en propiedades.
  2. Copiado la ruta de ubicación de "Inicio en"
  3. Miró por allí con el explorador de Windows y encontró "atom.exe".
  4. Escribí esto en el bash git:

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

Nota: Cambié todos / por / . Creé un .bashrc en mi directorio de inicio y usé / para configurar mi directorio de inicio y funcionó, así que asumí / será el camino a seguir.

atom-editor git git-bash windows-10


Acabo de tener el mismo problema y encontré una solución diferente. Yo estaba consiguiendo

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

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

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

Esto me permite editar archivos desde la línea de comandos con ec <filename> , y tener una configuración visual significa que la mayoría de los programas de Unixy también lo seleccionan. Git parece buscar el camino de manera diferente a mis otros comandos, sin embargo, cuando ProcMon un git commit en ProcMon lo vi en cada carpeta en el camino para ec y para ec.exe , pero no para ec.bat . GIT_EDITOR=ec.bat otra variable de entorno ( GIT_EDITOR=ec.bat ) y todo estaba bien.


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

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

Al configurar git config core.editor notepad , los usuarios ahora pueden usar notepad.exe como su editor predeterminado .
La configuración de git config format.commitMessageColumns 72 será recogida por el envoltorio de la libreta y envuelve la línea en el mensaje de confirmación después de que el usuario lo edite.

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 cuando se genera 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.

Consulte 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 - in commit 0c69a13 , 19 de diciembre de 2017)

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

Cuando se genera un GIT_EDITOR gráfico por un comando Git que se abre y espera la entrada del usuario (por ejemplo, " git rebase -i "), la ventana del editor puede estar oculta por otras ventanas.
Es posible que el usuario se quede mirando la ventana del terminal de Git original sin siquiera darse cuenta de que necesita interactuar con otra ventana antes de que Git pueda continuar. A este usuario Git aparece colgando.

Imprima un mensaje de que Git está esperando la entrada del editor en el terminal original y deshágase de él cuando el editor regrese, si el terminal permite borrar la última línea.

Respuesta original

Acabo de probarlo con git versión 1.6.2.msysgit.0.186.gf7512 y Notepad ++ 5.3.1

Prefiero no tener que configurar una variable EDITOR, así que intenté:

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

Eso 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 npp.bat incluyendo:

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

y escribo:

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

Simplemente funciona desde la sesión de DOS, pero no desde el shell de git .
(No es que con el mecanismo de configuración core.editor, un script con " start /WAIT... " no funcionaría, pero solo abriría una nueva ventana de DOS)

La respuesta de Bennett menciona la posibilidad de evitar agregar un script, pero hacer referencia directamente al programa entre comillas simples . ¡Observa la dirección de las barras! Use / NOT / para separar carpetas en el nombre de la ruta!

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

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

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

Pero prefiero usar un script (ver más abajo): de esa manera puedo jugar con diferentes rutas u opciones sin tener que volver a registrar una 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 script de shell ( /bin/sh ) , no un script de DOS.

Entonces 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, 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í la opción -multiInst ''), y esperarán a que esa instancia se cierre antes de continuar.

Tenga en cuenta que solo uso ''/'', no / ''. E instalé msysgit con la opción 2. (Agregue el directorio git/bin a la PATH entorno PATH , pero sin anular algunas herramientas integradas de Windows)

El hecho de que el contenedor de notepad ++ se llame .bat no es importante.
Sería mejor nombrarlo ''npp.sh'' y colocarlo en el directorio [git]/cmd (o en cualquier directorio al que haga referencia su variable de entorno PATH).

Ver también:

lightfire228 añade en los comentarios :

Para cualquier persona que tenga un problema donde N ++ simplemente abre un archivo en blanco y git no recibe su mensaje de confirmación, consulte " Anulación de confirmación debido a un mensaje vacío ": cambie su archivo .bat o .sh para decir:

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

Eso le indicará a notepad ++ que abra el archivo de confirmación temporal, en lugar de uno nuevo en blanco.


Aquí hay una solución con Cygwin:

#!/bin/dash -e if [ "$1" ] then k=$(cygpath -w "$1") elif [ "$#" != 0 ] then k= fi Notepad2 ${k+"$k"}

  1. Si no hay camino, no se pasa.

  2. Si la ruta está vacía, pase la ruta vacía

  3. Si la ruta no está vacía, convierta al formato de Windows.

Luego establezco estas variables:

export EDITOR=notepad2.sh export GIT_EDITOR=''dash /usr/local/bin/notepad2.sh''

  1. EDITOR permite que el script funcione con Git

  2. GIT_EDITOR permite que el script funcione con comandos de Hub

Source


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

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

-wait puede causar problemas, especialmente si está trabajando con gerrit y cambia las identificaciones que deben copiarse manualmente al final de su mensaje de confirmación


Cuando se utiliza un programa homedrive montado de forma remota (samba share, nfs, ...), su carpeta ~/.git se comparte en todos los sistemas, lo que puede provocar varios problemas. Por lo tanto, prefiero un script para determinar el editor correcto para el sistema correcto:

#!/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 script de shell simple, pero utilicé perl, ya que perl se incluye con msysgit y sus sistemas unixoid también proporcionarán uno. Poner el script en /home/username/bin , que debe agregarse a PATH en .bashrc o .profile . Una vez agregado con git config --global core.editor giteditor.pl usted tiene el editor correcto, dondequiera que esté.


De todos modos, he estado jugando con esto y encontré que lo siguiente funciona bien para mí:

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

No creo que a CMD le gusten las comillas simples, por lo que debe usar comillas dobles "para especificar el argumento de cadena incrustada en el espacio".

Cygwin (que creo que es la plataforma subyacente para Git''s Bash) por otro lado, le gusta '' y " ; puede especificar una ruta similar a CMD, utilizando / lugar de / , siempre que la cadena esté citada, es decir, en este caso, utilizando comillas simples.

El -m anula / indica el uso de múltiples editores y no hay necesidad de un %* añadido al final.


Edite el archivo .gitconfig en la carpeta c: / Users / YourUser y agregue:

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


Esta es mi configuración para usar 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 "$*"

Funciona tanto en la consola de DOS como en msysgit.


Este es el 1 síntoma de mayores problemas. Cabe destacar que tienes algo de ajuste TERM = tonto. Otras cosas que no funcionan correctamente son el comando less que dice que no tiene un terminal completamente funcional. Parece que esto es más comúnmente causado por tener TERM establecido en algo en sus variables de entorno de ventanas globales. Para mí, el problema surgió cuando instalé Strawberry Perl. Hay algo de información sobre esto en el error msysgit para este problema , así como varias soluciones.

La primera solución es arreglarlo en tu ~ / .bashrc agregando:

export TERM=msys

Puedes hacer esto desde el prompt de Git BASH así:

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

La otra solución que en última instancia es lo que hice porque no me importan las razones de Strawberry Perl para agregar TERM = tonto a la configuración de mi entorno es ir y eliminar el TERM = tonto como se indica en este comentario sobre el informe de errores de msysgit .

Panel de control / Sistema / Avanzado / Variables de entorno ... (o similar, dependiendo de su versión de Windows) es donde las variables de entorno se configuran en Windows. De forma predeterminada, TERM no está establecido. Si TERM está configurado allí, entonces usted (o uno de los programas que ha instalado, por ejemplo, Strawberry Perl) lo ha configurado. Borra esa configuración, y deberías estar bien.

De manera similar, si usa Strawberry Perl y se preocupa por el cliente de CPAN o algo así, puede dejar el TERM=dumb solo y usar el unset TERM en su archivo ~ / .bashrc, que tendrá un efecto similar al de establecer un término explícito como el anterior.

Por supuesto, todas las demás soluciones son correctas, ya que puede usar git config --global core.editor $MYFAVORITEEDITOR para asegurarse de que git use su editor favorito cuando necesite iniciar uno por usted.



Esto me funciona con Cygwin y Textpad 6 (EDIT: también funciona con Textpad 5 siempre que haga el cambio obvio en el script), y probablemente el modelo también podría usarse para otros editores:

~ / .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 también:

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

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


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

git config --global core.editor vim

que funciona muy bien.


Gracias a la comunidad SO ... y un poco de investigación pude conseguir que mi editor favorito, EditPadPro , funcionara como el editor central con msysgit 1.7.5.GIT y TortoiseGit v1.7.3.0 sobre WinXP SP3 ...

Siguiendo los consejos anteriores, agregué la ruta a un script de 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 las soluciones mencionadas anteriormente ... finalmente pude hacer que esto funcionara. Según la documentación de EditPadPro, agregar el indicador ''/ newinstance'' permitiría al shell esperar la entrada del editor ...

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

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


He tenido dificultades para conseguir que Git coopere con WordPad, KomodoEdit 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 ocurra el guardar / cerrar.

Como muleta, acabo de hacer ie

git commit -m "Fixed the LoadAll method"

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 trabajo que hacer en la versión de Windows de git.

El GitGUI tampoco es tan malo. Toma un poco de orientación, pero después de eso, funciona bastante bien.


Logré que la versión del entorno funcionara configurando la variable EDITOR usando comillas y / :

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


Necesitaba hacer lo siguiente para que git lanzara notepad ++ en windoze:

-y agrega lo siguiente a .gitconfig:

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

-modificar el acceso directo para iniciar el shell git bash para que se ejecute como administrador, y luego usarlo para iniciar el shell git bash. Supuse que la entrada del menú contextual "Git Bash aquí" no estaba ejecutando npp con los permisos necesarios.

Después de hacer tanto de lo anterior funcionó.


Notepad ++ funciona bien, aunque elijo seguir con Notepad, -m, o incluso a veces con la "edición" incorporada.

El problema que está encontrando con Notepad ++ está relacionado con cómo git está ejecutando el ejecutable del editor. Mi solución a esto es establecer EDITOR en un archivo por lotes, en lugar del ejecutable del editor real, que hace lo siguiente:

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

/ WAIT le dice a la sesión de la línea de comandos que se detenga hasta que la aplicación salga, por lo que podrá editar al contenido de su corazón mientras git lo espera felizmente. % * pasa todos los argumentos al archivo por lotes a través de Notepad ++.

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


Para Atom puedes hacer

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

y similares para VSCode

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

que abrirá una ventana Atom o VSCode para que pueda realizar el proceso,

o para Sublime

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


Parece que Git no encontrará el editor si hay espacios en la ruta. Por lo tanto, tendrá que colocar el archivo por lotes mencionado en la respuesta de Patrick en una ruta que no sea un espacio en blanco.


Prefiero usar emacs. Ponerlo en marcha puede ser un poco complicado.

  1. Descargue emacs y descomprímalo en algún lugar como c:/emacs .
  2. Ejecute c:/emacs/bin/addpm.exe . Debe hacer clic con el botón derecho y "Ejecutar como administrador" si está usando Windows Vista o superior. Esto pondrá los ejecutables en tu camino.
  3. Agregue (server-start) en algún lugar de su archivo .emacs . Consulte las Preguntas frecuentes de Emacs Windows para obtener consejos sobre dónde colocar su archivo .emacs .
  4. git config --global core.editor emacsclientw

Git ahora abrirá archivos dentro de un proceso existente de emacs. Tendrá que ejecutar ese proceso existente manualmente desde c:/emacs/bin/runemacs.exe .


Resucitando un hilo viejo, pero encontré una solución bellamente simple publicada here , aunque puede haber un error en la ruta en la que tienes que copiar el archivo "subl" dado por el autor. Estoy ejecutando Win 7 x64 y tuve que poner el archivo "subl" en mi carpeta /Git/cmd/ para que funcione. Aunque funciona como un encanto.


Sobre la base de la respuesta de Darren , para usar Notepad ++, simplemente puede hacer esto (todo en una línea):

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

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

Funciona como un encanto para mí.


También uso Cygwin en Windows, pero con gvim (a diferencia del vim basado en terminal).

Para hacer este trabajo, he hecho lo siguiente:

  1. Creó un archivo por lotes de una línea (llamado git_editor.bat ) que contiene lo siguiente:
    "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Colocado git_editor.bat en mi PATH .
  3. Establecer GIT_EDITOR=git_editor.bat

Con esto hecho, git commit , etc. invocará correctamente el ejecutable gvim.

NOTA 1: La opción --nofork para 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 obligatorias si tiene espacios en la ruta.

NOTA 3: Las citas en torno a "% *" son necesarias en caso de que git pase una ruta de archivo con espacios.


Tuve PortableGit 1.6 funcionando bien pero después de actualizar a PortableGit-1.7, la versión de Windows tuvo problemas. Algunos de los comandos de git abren Notepad ++. Exe bien, pero otros no, especialmente git rebase se comporta de manera diferente.

El problema es que algunos comandos ejecutan el proceso de cmd de Windows, algunos usan el proceso de cmd de Unix Quiero asignar atributos de inicio al editor de Notepad ++, por lo que debo tener un script personalizado. Mi solución es la siguiente.

1) Cree un script para ejecutar un editor de texto apropiado. El script se ve raro pero maneja tanto las ventanas como la variación de 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) La secuencia de comandos set global core.editor se guardó en la carpeta git / cmd por lo que ya está en una ruta de gitconsole, esto es obligatorio ya que la ruta completa puede no funcionar correctamente.

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

Ahora puedo ejecutar los comandos git commit -a y git rebase -i master . Pruébalo si tienes problemas en la herramienta de ventanas de Git.


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 el control de lanzamiento con git y puse un clon de repositorio de git en cada máquina). La solución que encontré es esta:

Puse mi editor a giteditor

git config --global core.editor giteditor

Luego creo un enlace simbólico llamado giteditor que está en mi RUTA . (Tengo un directorio bin personal, pero en cualquier lugar en el PATH funciona.) Ese enlace apunta a mi editor actual de mi elección. En diferentes máquinas y diferentes plataformas, utilizo diferentes editores, así que esto significa que no tengo que cambiar mi configuración universal de git ( .gitconfig ), solo el enlace al que apunta el editor .

Los enlaces simbólicos son manejados por cada sistema operativo que conozco, aunque pueden usar diferentes comandos. Para Linux, usas ln -s . Para Windows, utiliza el mdlink incorporado de cmd . Tienen diferentes sintaxis (que deberías consultar), pero todo funciona de la misma manera, en realidad.


Yo uso Cygwin en Windows, entonces uso:

export EDITOR="emacs -nw"

La -nw es para no-windows , es decir, decirle a Emacs que no intente usar X11.

Las combinaciones de teclas de Emacs no funcionan para mí desde un shell de Windows, así que solo usaría esto desde un shell de Cygwin ... (se recomienda rxvt).


Vim/Gvim funciona bien para mí.

>echo %EDITOR% c:/Vim/Vim71/vim.exe


Edición: Después de actualizar a vim 7.3, he llegado a la conclusión de que la forma más limpia y sencilla de hacer esto es:

  1. Agregue la carpeta principal de Vim a su ruta (haga clic con el botón derecho en Mi PC -> Propiedades -> Avanzado -> Variables de entorno)

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

Si lo haces de esta manera, estoy bastante seguro de que también funcionará con cygwin.

Respuesta original:

Incluso con un par de respuestas relacionadas con vim, tuve problemas para hacer que esto funcionara con gvim en Windows (mientras no utilizaba un archivo por lotes o% EDITOR% o cygwin).

Lo que finalmente encontré es agradable y limpio, y se basa en algunas de las soluciones aquí:

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

Una cosa que me tomó un tiempo es que no son las barras invertidas del estilo de Windows, son barras diagonales normales.


Wordpad!

Estoy feliz de usar vim, pero ya que estoy tratando de presentar Git a la compañía, quería algo que todos tendríamos, y descubrí que Wordpad parece funcionar bien (es decir, Git espera hasta que haya terminado de editar y cerrar). la ventana).

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

Eso es usar Git Bash en msysgit; No lo he intentado desde el símbolo del sistema de Windows (si eso hace alguna diferencia).