Cómo usar Visual Studio Code como Editor predeterminado para Git MergeTool


Hoy estaba tratando de usar el git mergetool en el símbolo del sistema de Windows y me di cuenta de que era predeterminado usar VIM, lo cual es genial, pero preferiría VSCode.

¿Cómo puedo tener Visual Studio Code como mi GUI para manejar conflictos de fusión (o incluso como una herramienta de diferencia) para Git?

Author: Eric D. Johnson, 2017-06-14

2 answers

A partir de VSCode 1.13 Better Merge se integró en el núcleo de VSCode.

La forma de conectarlos juntos es modificar su .gitconfig y tiene dos opciones.

  1. Para hacer esto con las entradas de la línea de comandos, ingrese cada una de estas: (Nota: reemplazar " con ' en Windows Git Bash como lo aclaró Iztok Delfin y e4rache)

    1. git config --global merge.tool vscode
    2. git config --global mergetool.vscode.cmd "code --wait $MERGED"
    3. git config --global diff.tool vscode
    4. git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
  2. Para hacer esto pegando alguna línea en el .gitconfig con Código VS .

    • Ejecute git config --global core.editor "code --wait" desde la línea de comandos.
    • Desde aquí puede introducir el comando git config --global -e. Usted querrá pegar en el código en el" Bloque Extra " a continuación.

      [user]
          name = EricDJohnson
          email = [email protected]
      [gui]
          recentrepo = E:/src/gitlab/App-Custom/Some-App
      # Comment: You just added this via 'git config --global core.editor "code --wait"'
      [code]
          editor = code --wait
      # Comment: Start of "Extra Block"
      # Comment: This is to unlock VSCode as your git diff and git merge tool    
      [merge]
          tool = vscode
      [mergetool "vscode"]
          cmd = code --wait $MERGED
      [diff]
          tool = vscode
      [difftool "vscode"]
          cmd = code --wait --diff $LOCAL $REMOTE
      # Comment: End of "Extra Block"
      

Ahora desde con en tu directorio git con un conflicto ejecutar git mergetool y, tada, tienes VSCode ayudándote a manejar el conflicto de fusión! (Solo asegúrese de guardar su archivo antes de cerrar VSCode).

¿Alguien Acepta el Cambio Entrante?

Para obtener más información sobre el lanzamiento de code desde la línea de comandos, consulte estos documentos .

Para más información en git mergetool echa un vistazo a estos docs.

 100
Author: Eric D. Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-23 21:14:17

Tuve que reemplazar las comillas dobles con comillas simples:

  git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

Para que funcione correctamente.
(con comillas dobles, LOCAL LOCAL y REMOTE REMOTE son reemplazados por sus valores)

Esto es necesario si está utilizando Git Bash para Windows en lugar del Símbolo del sistema de Windows.

 1
Author: e4rache,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-21 10:55:14