web-dev-qa-db-fra.com

Comment utiliser le code Visual Studio comme éditeur par défaut pour Git MergeTool

Aujourd’hui, j’essayais d’utiliser le git mergetool sur l’invite de commande Windows et j’ai réalisé qu’il était par défaut d’utiliser VIM, ce qui est bien, mais je préférerais VSCode.

Comment puis-je avoir Code Visual Studio comme interface graphique pour gérer les conflits de fusion (ou même comme outil de différenciation) pour Git?

88
Eric D. Johnson

À compter de VSCode 1.1 Une meilleure fusion a été intégrée dans le noyau de VSCode.

La façon de les relier ensemble est de modifier votre .gitconfig et vous avez deux options .

  1. Pour ce faire avec les entrées de ligne de commande, entrez chacun de ces éléments: (Remarque: remplacez " par ' sur Windows Git Bash, comme expliqué par Iztok Delfin et 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. Pour ce faire, collez une ligne dans le .gitconfigavec VS Code .

    • Exécutez git config --global core.editor "code --wait" à partir de la ligne de commande.
    • De là, vous pouvez entrer la commande git config --global -e. Vous voudrez coller le code dans le "Bloc supplémentaire" ci-dessous.

      [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"'
      [core]
          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"
      

Maintenant dans votre répertoire git avec un conflit, lancez git mergetool et, tada, vous avez VSCode qui vous aide à gérer le conflit de fusion! (Assurez-vous simplement de enregistrer votre fichier avant de fermer VSCode).

Accept Incoming Change anyone?

Pour plus d'informations sur le lancement de code à partir de la ligne de commande, reportez-vous à ces docs .

Pour plus d'informations dans git mergetool, consultez ces docs .

179
Eric D. Johnson

J'ai dû remplacer les guillemets doubles par des guillemets simples:

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

pour que cela fonctionne correctement.
(avec guillemets doubles, $ LOCAL et $ REMOTE sont remplacés par leurs valeurs)

Cela est nécessaire si vous utilisez Git Bash pour Windows au lieu de l'invite de commande Windows.

12
e4rache