Cómo usar el código de Visual Studio como editor predeterminado para Git

365

Cuando uso git en la línea de comandos, me pregunto si es posible usar Visual Studio Code como el editor predeterminado, es decir, al crear comentarios de confirmación y mirar un archivo de diferencias desde la línea de comandos.

Entiendo que no será posible usarlo para hacer fusiones (al menos por el momento), pero ¿alguien sabe si es posible usarlo para ver las diferencias y, de ser así, qué opciones de línea de comandos se requerirían en el archivo .gitconfig para que esto suceda?

ACTUALIZACIÓN 1:

He intentado un enfoque similar a lo que he hecho para Notepad ++ en el pasado , es decir

#!/bin/sh

"c:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

Y usado:

#!/bin/sh

"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"

Pero esto da como resultado un mensaje de error:

C:\temp\testrepo [master +1 ~0 -0]> git commit
[8660:0504/084217:ERROR:crash_reporter_win.cc(70)] Cannot initialize out-of-process crash handler
Aborting commit due to empty commit message.
C:\temp\testrepo [master +1 ~0 -0]>

El código se abre correctamente, con el contenido esperado, pero no está esperando la respuesta, es decir, haciendo clic en guardar y cerrando la ventana para volver al indicador.

ACTUALIZACIÓN 2:

Acabo de recibir noticias de uno de los desarrolladores que trabajan en VSCode. Parece que esta funcionalidad actualmente no es compatible :-(

https://twitter.com/IsidorN/status/595501573880553472

Si está interesado en que se agregue esta función, puede pensar en agregar sus votos aquí:

http://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/7756482-support-git-configure-diff-and-merge-tools

ACTUALIZACIÓN 3:

Me han informado de manera confiable que esta función ha sido recogida por el equipo de VSCode, por lo que espero con ansias una versión futura que la incluya.

ACTUALIZACIÓN 4:

Gracias al comentario de @ f-boucheros a continuación, he podido hacer que VS Code funcione como el editor predeterminado para enviar comentarios, rebase, etc. Todavía me gustaría ver si es posible usarlo también como herramienta de diferencias.

ACTUALIZACIÓN 5:

Según la respuesta aceptada para la pregunta, esto ahora es posible utilizando la versión de código V1.0.

Parque Gary Ewan
fuente

Respuestas:

674

En la versión más reciente (v1.0, lanzada en marzo de 2016 ), ahora puede usar VS Code como la herramienta predeterminada git commit / diff . Citado de las documentaciones:

  1. Asegúrese de que puede ejecutar code --helpdesde la línea de comandos y obtenga ayuda.

    • Si no ve ayuda, siga estos pasos:

      • Mac: Seleccione el comando Shell: instale el comando 'Código' en la ruta desde la Paleta de comandos.

        • La paleta de comandos es lo que aparece cuando presiona shift+ + Pmientras está dentro de VS Code. ( shift+ ctrl+ Pen Windows)
      • Windows: asegúrese de haber seleccionado Agregar a RUTA durante la instalación.
      • Linux: asegúrese de haber instalado Code a través de nuestros nuevos paquetes .deb o .rpm.
  2. Desde la línea de comando, ejecute git config --global core.editor "code --wait"

Ahora puede ejecutar git config --global -ey usar VS Code como editor para configurar Git. ingrese la descripción de la imagen aquí Agregue lo siguiente para habilitar el soporte para usar VS Code como herramienta diff:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

Esto aprovecha la nueva --diffopción que puede pasar a VS Code para comparar dos archivos uno al lado del otro.

Para resumir, aquí hay algunos ejemplos de dónde puede usar Git con VS Code:

  • git rebase HEAD~3 -i permite rebase interactivo usando VS Code
  • git commit permite usar el código VS para el mensaje de confirmación
  • git add -pseguido por epara agregar interactiva
  • git difftool <commit>^ <commit> permite usar VS Code como editor de diferencias para cambios
rexcfnghk
fuente
84
También encontré que agregar --new-windowal comando es útil. De esta manera, la operación git se abrirá en una nueva ventana.
jrotello
2
Cuando hablamos de línea de comando, ¿ queremos decir Ctrl+Shift+P? El mío no funciona (no code --helpdisponible) y no entiendo lo que significa: "Asegúrese de haber seleccionado Agregar a RUTA durante la instalación" ¿Qué debo hacer para verificarlo? ¿Puede alguien ayudarme por favor?
Paolo Falomo el
2
Tenga en cuenta que a partir de la v1.1 necesita deshabilitar la "salida en caliente" o recuerde guardar explícitamente el archivo antes de salir de vscode, de lo contrario, git no verá ningún cambio. Si prefiere que se le recuerde que debe guardar al salir, puede desactivar esta función editando su configuración de usuario: Insertar "files.hotExit": "off"en la parte inferior de su configuración
Jack Ukleja
66
Tuve que usar git config core.editor "code -n --wait"con VS Code 1.17.2, que se ejecuta desde la línea de comandos externa. Ambos codey code --waitme dieron el mensaje "Compromiso de cancelación debido a un mensaje de confirmación vacío".
Robert Calhoun
3
Y merge ahora está disponible, así como: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting
31

Por lo que entiendo, VSCode ya no está en AppData.

Establezca el editor git predeterminado ejecutando ese comando en una ventana de símbolo del sistema:

git config --global core.editor "'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"

El parámetro -w, --waites esperar a que la ventana se cierre antes de regresar. Visual Studio Code se basa en Atom Editor. si también tiene un átomo instalado, ejecute el comando atom --help. Verá que el último argumento en la ayuda es esperar.

La próxima vez que lo haga git rebase -i HEAD~3, aparecerá el Código de Visual Studio. Una vez que VSCode esté cerca, Git retomará el liderazgo.

Nota: Mi versión actual de VSCode es 0.9.2

Espero que te sirva de ayuda.

Frank Boucher
fuente
¡Gracias! ¿Cuál es el significado de -wy dónde lo encontró documentado?
Gary Ewan Park
1
Buen punto. Viene de Atom -w es para Wait. Edité mi respuesta.
Frank Boucher
He configurado esto, y estoy feliz de decir que está funcionando. Si pudiera hacer que esto funcione ahora como Visual Studio Code haciendo la diferenciación de los archivos también, ¡sería genial! :-)
Gary Ewan Park
10
ahora parece que esto ya no funciona con la última actualización de VS Code. ¿Tienes alguna idea? ¡Gracias!
Gary Ewan Park
2
@GaryEwanPark: debe iniciar code.cmd (o código en * nix) desde el subdirectorio bin para que funcionen las opciones de la línea de comandos. Lo ideal sería agregar el subdirectorio bin a la variable de entorno% PATH% (el instalador también lo hace por usted) y configurar el editor en ejecución git config --global core.editor "code --wait".
Inspeccionable el
13

Necesitas usar el comando:

git config --global core.editor "'C:\Program Files\Microsoft VS Code\code.exe' -n -w"

Asegúrate de que puedes iniciar tu editor desde Git Bash

Si desea usar Code.exe con una ruta corta, puede hacerlo agregando la siguiente línea a su .bash_profile:

alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"

Y ahora, puedes llamarlo usando solo el vscodecomando (o como lo llames )

Alguna información adicional:

El programa de instalación agregará el código de Visual Studio a su% PATH%, por lo que desde la consola puede escribir 'código' para abrir el código VS en esa carpeta. Deberá reiniciar su consola después de la instalación para que el cambio en la variable de entorno% PATH% surta efecto.

IluxaKuk
fuente
1
-nes la abreviatura de --new-windowhacer que git abra una nueva ventana del editor, y -wes la abreviatura de --waithacer que git espere a que cierre la ventana nuevamente. Esta es la única respuesta que funciona para mí, porque si ya tengo abierto VS Code --waitno funcionaré sin él --new-window.
Jan Aagaard
11

Otra opción útil es establecer EDITORuna variable de entorno. Esta variable de entorno es utilizada por muchas utilidades para saber qué editor usar. Git también lo usa si no core.editorestá configurado.

Puede configurarlo para la sesión actual usando:

export EDITOR="code --wait"

De esta manera, no solo git, sino que muchas otras aplicaciones usarán VS Code como editor.

Para que este cambio sea permanente, agréguelo a su, ~/.profilepor ejemplo. Vea esta pregunta para más opciones.


Otra ventaja de este enfoque es que puede configurar diferentes editores para diferentes casos:

  1. Cuando trabajas desde la terminal local.
  2. Cuando estás conectado a través de la sesión SSH.

Esto es útil especialmente con VS Code (o cualquier otro editor de GUI) porque simplemente no funciona sin GUI.

En el sistema operativo Linux, ponga esto en su ~/.profile:

# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then # SSH mode
  export EDITOR='vim'
else # Local terminal mode
  export EDITOR='code -w'
fi

De esta manera, cuando use un terminal local, la $SSH_CONNECTIONvariable de entorno estará vacía, por lo code -wque se utilizará el editor, pero cuando esté conectado a través de SSH, $SSH_CONNECTIONla variable de entorno será una cadena no vacía, por lo vimque se utilizará el editor. Es un editor de consola, por lo que funcionará incluso cuando esté conectado a través de SSH.

Ruslan Stelmachenko
fuente
2

Abrí mi .gitconfigy lo modifiqué con:

[core]
    editor = 'C:/Users/miqid/AppData/Local/Code/app-0.1.0/Code.exe'

Eso lo hizo por mí (estoy en Windows 8).

Sin embargo, noté que después de probar un arbitrario git commitque en mi consola Git Bash veo el siguiente mensaje:

[9168:0504/160114:INFO:renderer_main.cc(212)] Renderer process started

No estoy seguro de cuáles podrían ser las ramificaciones de esto.

miqh
fuente
También lo había intentado, sin embargo, estaba obteniendo "fatal: línea de archivo de configuración incorrecta 14 en C: \ Users \ gep13 / .gitconfig", luego noté que tenía barras diagonales inversas, donde tienes barras diagonales. Cambiar esas rondas hizo que funcionara, pero al igual que usted, estoy viendo el resultado "El proceso de renderizado comenzó", que en realidad genera dos veces para mí, y luego muestra: "[11956: 0504/091108: ERROR: ipc_channel_win.cc (136)] pipe error: 109 "pero la confirmación parece haber funcionado.
Gary Ewan Park
Ah interesante. Parece que mi sugerencia solo funciona si tiene el Código completamente cerrado (¡no es muy conveniente!) Antes de realizar la confirmación. Me encuentro con el mismo error que informó en su actualización si el Código está abierto.
miqh
interesante de hecho. Supongo que ahí es donde entraría en juego el indicador -multiInst para Notepad ++. Me pregunto si hay algo similar para VSCode.
Gary Ewan Park
Solo para su información, app-0.1.0/resources/app/env.jsparece contener algunas banderas de línea de comandos que toma el ejecutable del Código. Ninguno sugiere un comportamiento equivalente al de -multiInstsin embargo.
miqh
necesita agregar el --waitindicador, y el --new-windowindicador también es muy recomendable, de modo que el commit msg / diff / whatever no solo se muestre como una nueva pestaña en un editor ya abierto, lo que requiere que cierre los archivos que aún puede estar trabajando para indicarle a git que has terminado de editar.
Isochronous
1

GitPad establece su editor de texto actual como el editor predeterminado para Git.

Mi editor predeterminado para .txt archivos en Windows 10 es Visual Studio Code y ejecutar GitPad una vez lo convirtió en el editor predeterminado para Git. No he experimentado los problemas mencionados en la pregunta (Git espera hasta que se cierre la ventana VS Code en mi caso).

(El enlace para el .exearchivo no funcionó para mí, es posible que deba compilar la fuente usted mismo).

Şafak Gür
fuente
¿Qué señaló como el editor predeterminado? He tratado de usar lo que se describe aquí: donovanbrown.com/post/2015/07/07/… Pero eso no parece querer funcionar. Realmente no quiero apuntar a un exe específico, ya que eso cambiará a medida que se actualice el Código.
Gary Ewan Park
1
@Gary, yo no tenía a punto un archivo específico, Código estaba en la lista cuando lo hice Right click> Open with> Chose another app. Esperaría que se registre en la configuración (y actualice el registro con cada actualización para que Shell pueda encontrarlo) pero no pude encontrar nada más que el elemento del menú contextual "Abrir con código" en el registro. Así que realmente no tengo una respuesta más clara para esto, lo siento.
Şafak Gür
Hmm, eso es raro, no tengo código como entrada en la lista que aparece cuando hago eso.
Gary Ewan Park
1

¡Buenas noticias! Al momento de escribir, esta característica ya se ha implementado en la versión 0.10.12-insiders y se ha llevado a cabo a través de 0.10.14-insiders . Por lo tanto, lo tendremos en la próxima versión 1.0 Release of VS Code .

Referencia de implementación: Implementar -w / - esperar línea de comando arg

Wasif Hossain
fuente
¿Puedes comentar cómo podría usar el visor diff dentro de VSCode para ver los diff en git?
Gary Ewan Park
1

Solo quiero agregar estas barras diagonales inversas a las respuestas anteriores, estoy en Windows 10 CMD, y no funciona sin barras diagonales antes de los espacios.

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"
Victor Ma
fuente
Pude agregar con: git config --global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000
0

No estoy seguro de que pueda hacer esto, sin embargo, puede probar estas adiciones en su archivo gitconfig.

Intente reemplazar el kdiff3 de estos valores para señalar el ejecutable del código visual de estudio.

[merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe keepBackup = false trustExitCode = false

SJMan
fuente
Como mencioné en mi pregunta, no creo que la fusión sea compatible, ya que no creo que Visual Studio Code sepa cómo hacer esto, sospecho que solo podrá hacer diff y enviar mensajes.
Gary Ewan Park
0

Configuré Visual Studio Code como predeterminado para abrir el archivo .txt. Y la siguiente hice uso de comandos simple: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". Y todo funciona bastante bien.

Zidu
fuente
0

Ejecute este comando en su aplicación Mac Terminal

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
Mahoma
fuente
2
Esto no funciona del todo cuando recibe el mensaje de error: Anulación de la confirmación debido a un mensaje de confirmación vacío. Será necesario agregar una bandera de espera. Por ejemplo, espera.
Belfield
0

En Windows 10 con la edición de 64 bits, el comando debería ser:

git config --global core.editor "'C: \ Archivos de programa \ Microsoft VS Code Insiders \ bin \ code-insiders.cmd'"

También puede cambiar el nombre de 'code-insiders.cmd' a 'code.cmd' en el directorio 'Program Files', de esta manera ahora puede usar el comando 'code'. para comenzar a editar los archivos en el. directorio

LuisCarlos Rodriguez
fuente