Comment utiliser Visual Studio Code comme éditeur par défaut pour Git

365

Lorsque j'utilise git sur la ligne de commande, je me demande s'il est possible d'utiliser Visual Studio Code comme éditeur par défaut, c'est-à-dire lors de la création de commentaires de validation, et en regardant un diff d'un fichier à partir de la ligne de commande.

Je comprends qu'il ne sera pas possible de l'utiliser pour faire des fusions (au moins à la minute) mais est-ce que quelqu'un sait s'il est possible de l'utiliser pour regarder les différences, et si oui, quelles options de ligne de commande seraient nécessaires dans le fichier .gitconfig pour y arriver?

MISE À JOUR 1:

J'ai essayé une approche similaire à ce que j'ai fait pour Notepad ++ dans le passé , c'est-à-dire

#!/bin/sh

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

Et utilisé:

#!/bin/sh

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

Mais cela se traduit par un message d'erreur:

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]>

Le code s'ouvre correctement, avec le contenu attendu, mais il n'attend pas la réponse, c'est-à-dire en cliquant sur enregistrer et en fermant la fenêtre pour revenir à l'invite.

MISE À JOUR 2:

Je viens d'entendre l'un des développeurs travaillant sur VSCode. Il semble que cette fonctionnalité ne soit pas prise en charge actuellement :-(

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

Si vous souhaitez voir cette fonctionnalité ajoutée, vous pouvez penser à ajouter vos votes ici:

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

MISE À JOUR 3:

J'ai été informé de manière fiable que cette fonctionnalité a été récupérée par l'équipe VSCode, donc j'attends avec impatience une future version qui l'inclura.

MISE À JOUR 4:

Grâce au commentaire de @ f-boucheros ci-dessous, j'ai pu faire fonctionner VS Code en tant qu'éditeur par défaut pour les commentaires de commit, rebase, etc. Je voudrais quand même voir s'il est possible de l'utiliser également comme outil de diff.

MISE À JOUR 5:

Selon la réponse acceptée à la question, cela est désormais possible en utilisant la version V1.0 du code.

Parc Gary Ewan
la source

Réponses:

674

Dans la version la plus récente (v1.0, sortie en mars 2016 ), vous pouvez désormais utiliser VS Code comme outil git commit / diff par défaut . Extrait des documentations:

  1. Assurez-vous que vous pouvez exécuter à code --helppartir de la ligne de commande et que vous obtenez de l'aide.

    • si vous ne voyez pas d'aide, veuillez suivre ces étapes:

      • Mac: sélectionnez la commande Shell: installez la commande 'Code' dans le chemin de la palette de commandes.

        • La palette de commandes est ce qui apparaît lorsque vous appuyez sur shift+ + Pdans VS Code. ( shift+ ctrl+ Psous Windows)
      • Windows: assurez-vous que vous avez sélectionné Ajouter au CHEMIN lors de l'installation.
      • Linux: assurez-vous d'avoir installé le code via nos nouveaux packages .deb ou .rpm.
  2. À partir de la ligne de commande, exécutez git config --global core.editor "code --wait"

Vous pouvez maintenant exécuter git config --global -eet utiliser VS Code comme éditeur pour configurer Git. entrez la description de l'image ici Ajoutez les éléments suivants pour activer la prise en charge de l'utilisation de VS Code en tant qu'outil de diff:

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

Cela tire parti du nouveau --diff option que vous pouvez passer à VS Code pour comparer deux fichiers côte à côte.

Pour résumer, voici quelques exemples où vous pouvez utiliser Git avec VS Code:

  • git rebase HEAD~3 -i permet de rebaser interactivement en utilisant VS Code
  • git commit permet d'utiliser VS Code pour le message de validation
  • git add -psuivi d' eun ajout interactif
  • git difftool <commit>^ <commit> permet d'utiliser VS Code comme éditeur de différences pour les changements
rexcfnghk
la source
84
J'ai également trouvé que l'ajout --new-windowde la commande était utile. De cette façon, l'opération git s'ouvrira dans une nouvelle fenêtre.
jrotello
2
Lorsque nous parlons de ligne de commande, nous voulons dire Ctrl+Shift+P? Le mien ne fonctionne pas (non code --helpdisponible) et je ne comprends pas ce que cela signifie: "Assurez-vous d'avoir sélectionné Ajouter à PATH lors de l'installation" Que dois-je faire pour le vérifier? Quelqu'un peut-il m'aider?
Paolo Falomo
2
Notez qu'à partir de la version 1.1, vous devez désactiver la "sortie à chaud" ou n'oubliez pas de sauvegarder explicitement le fichier avant de quitter vscode, sinon git ne verra aucune modification. Si vous préférez qu'on vous rappelle d'économiser à la sortie, vous pouvez désactiver cette fonction en modifiant vos paramètres utilisateur: Insérer "files.hotExit": "off"en bas de votre configuration
Jack Ukleja
6
J'ai dû utiliser git config core.editor "code -n --wait"avec VS Code 1.17.2, en cours d'exécution à partir de la ligne de commande externe. Les deux codeet code --waitm'ont obtenu le «abandon de validation en raison d'un message de validation vide».
Robert Calhoun
3
Et la fusion est désormais disponible ainsi que: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting
31

Pour ce que je comprends, VSCode n'est plus dans AppData.

Définissez donc l'éditeur git par défaut en exécutant cette commande dans une fenêtre d'invite de commandes:

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

Le paramètre -w , --waitest d'attendre la fenêtre à fermer avant de revenir. Visual Studio Code est basé sur Atom Editor. si vous avez également installé atom, exécutez la commande atom --help. Vous verrez que le dernier argument de l'aide est attendre.

La prochaine fois que vous ferez git rebase -i HEAD~3 il affichera du code Visual Studio. Une fois VSCode fermé, Git reprendra la tête.

Remarque: Ma version actuelle de VSCode est 0.9.2

J'espère que cette aide.

Frank Boucher
la source
Merci! Quelle est l'importance de la -wet où avez-vous trouvé cela documenté?
Gary Ewan Park,
1
Bon point. Cela vient d'Atom -w est pour Wait. J'ai édité ma réponse.
Frank Boucher
J'ai mis cela en place et je suis heureux de dire que cela fonctionne. Si je pouvais faire en sorte que cela fonctionne maintenant en tant que Visual Studio Code faisant également la différence des fichiers, ce serait génial! :-)
Gary Ewan Park
10
cela ne semble plus fonctionner avec la dernière mise à jour de VS Code. As tu des idées? Merci!
Gary Ewan Park
2
@GaryEwanPark: Vous devez plutôt lancer code.cmd (ou coder sur * nix) à partir du sous-répertoire bin , pour que les options de ligne de commande fonctionnent. Idéalement, vous devez ajouter le sous-répertoire bin à votre variable d'environnement% PATH% (le programme d'installation le fait également pour vous) et configurer l'éditeur en cours d'exécution git config --global core.editor "code --wait".
IInspectable
13

Vous devez utiliser la commande:

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

Assurez-vous que vous pouvez démarrer votre éditeur depuis Git Bash

Si vous souhaitez utiliser Code.exe avec un chemin court, vous pouvez le faire en ajoutant la ligne suivante à votre .bash_profile:

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

Et maintenant, vous pouvez l'appeler en utilisant uniquement vscode commande (ou ce que vous avez nommé)

Quelques informations supplémentaires:

Le programme d'installation ajoutera du code Visual Studio à votre% PATH%, donc à partir de la console, vous pouvez taper «code» pour ouvrir VS Code sur ce dossier. Vous devrez redémarrer votre console après l'installation pour que la modification de la variable d'environnement% PATH% prenne effet.

IluxaKuk
la source
1
-nest l'abréviation de --new-windowgit pour ouvrir une nouvelle fenêtre d'éditeur, et l' -wabréviation de --waitgit attend que vous fermiez à nouveau la fenêtre. C'est la seule réponse qui fonctionne pour moi, car si je possède déjà VS Code ouvert, --waitje ne fonctionnerai pas sans --new-window.
Jan Aagaard
11

Une autre option utile consiste à définir EDITORla variable d'environnement. Cette variable d'environnement est utilisée par de nombreux utilitaires pour savoir quel éditeur utiliser. Git l'utilise également si aucun core.editorn'est défini.

Vous pouvez le définir pour la session en cours en utilisant:

export EDITOR="code --wait"

De cette façon, non seulement git, mais de nombreuses autres applications utiliseront VS Code comme éditeur.

Pour rendre ce changement permanent, ajoutez-le à votre ~/.profilepar exemple. Voir cette question pour plus d'options.


Un autre avantage de cette approche est que vous pouvez définir différents éditeurs pour différents cas:

  1. Lorsque vous travaillez à partir du terminal local.
  2. Lorsque vous êtes connecté via une session SSH.

Ceci est particulièrement utile avec VS Code (ou tout autre éditeur GUI) car il ne fonctionne tout simplement pas sans GUI.

Sur Linux OS, mettez ceci dans votre ~/.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 cette façon, lorsque vous utilisez un terminal local, la $SSH_CONNECTIONvariable d'environnement sera vide, donc l' code -wéditeur sera utilisé, mais lorsque vous serez connecté via SSH, alors $SSH_CONNECTIONla variable d'environnement sera une chaîne non vide, donc l' viméditeur sera utilisé. Il s'agit d'un éditeur de console, il fonctionnera donc même lorsque vous êtes connecté via SSH.

Ruslan Stelmachenko
la source
2

J'ai ouvert mon .gitconfiget l' ai modifié avec:

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

Cela me l'a fait (je suis sur Windows 8).

Cependant, j'ai remarqué qu'après avoir essayé un arbitraire git commit, dans ma console Git Bash, je vois le message suivant:

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

Je ne sais pas quelles pourraient en être les ramifications.

miqh
la source
J'avais également essayé que, cependant, j'obtenais "fatal: bad config file line 14 in C: \ Users \ gep13 / .gitconfig", puis j'ai remarqué que j'avais des barres obliques inverses, où vous avez des barres obliques. La modification de ces tours l'a fait fonctionner, mais comme vous, je vois la sortie «Le processus de rendu a commencé», qui sort en fait deux fois pour moi, puis affiche: «[11956: 0504/091108: ERREUR: ipc_channel_win.cc (136)] pipe erreur: 109 "mais le commit semble avoir fonctionné.
Gary Ewan Park
Ah, intéressant. Il semble que ma suggestion ne fonctionne que si vous avez complètement fermé le code (pas très pratique!) Avant de faire le commit. Je rencontre la même erreur que vous avez signalée dans votre mise à jour si le code est ouvert.
miqh
intéressant en effet. Je suppose que c'est là que le drapeau -multiInst pour Notepad ++ entrerait en jeu. Je me demande s'il y a quelque chose de similaire pour VSCode.
Gary Ewan Park
Juste pour info, app-0.1.0/resources/app/env.jssemble contenir quelques drapeaux de ligne de commande que l'exécutable Code prend. Aucun ne suggère un comportement équivalent à celui de -multiInstbien.
miqh
vous devez ajouter l' --waitindicateur, et l' --new-windowindicateur est également fortement recommandé, de sorte que le msg / diff / quoi que ce soit ne s'affiche pas simplement comme un nouvel onglet dans un éditeur déjà ouvert, vous obligeant à fermer des fichiers, vous pouvez toujours être travailler afin de signaler à Git que vous avez terminé l'édition.
Isochronous
1

GitPad définit votre éditeur de texte actuel comme éditeur par défaut pour Git.

Mon éditeur par défaut pour .txt fichiers dans Windows 10 est Visual Studio Code et l'exécution de GitPad en a fait un éditeur par défaut pour Git. Je n'ai pas rencontré les problèmes mentionnés dans la question (Git attend la fermeture de la fenêtre VS Code dans mon cas).

(Le lien pour le .exefichier ne fonctionnait pas pour moi, vous devrez peut-être compiler la source vous-même.)

Şafak Gür
la source
À quoi avez-vous fait référence en tant qu'éditeur par défaut? J'ai essayé d'utiliser ce qui est décrit ici: donovanbrown.com/post/2015/07/07/… Mais cela ne semble pas vouloir fonctionner. Je ne veux pas vraiment pointer vers un exe spécifique, car cela changera à mesure que le code sera mis à jour.
Gary Ewan Park
1
@Gary, je ne devais pas pointer un fichier spécifique, le code était dans la liste quand je l' ai Right click> Open with> Chose another app. Je m'attendrais à ce qu'il s'enregistre lui-même lors de l'installation (et met à jour le registre à chaque mise à jour pour que le shell puisse le trouver) mais je n'ai rien trouvé d'autre que l'élément de menu contextuel "Ouvrir avec le code" dans le registre. Je n'ai donc vraiment pas de réponse plus claire à ce sujet, désolé.
Şafak Gür
Hmm, c'est bizarre, je n'ai pas de code comme entrée dans la liste qui apparaît quand je fais ça.
Gary Ewan Park
1

Bonnes nouvelles! Au moment de la rédaction de ce document, cette fonctionnalité avait déjà été implémentée dans la version 0.10.12-insiders et réalisée via 0.10.14-insiders . Par conséquent, nous allons l'avoir dans la prochaine version 1.0 Release de VS Code .

Implémentation Réf: Implémenter -w / - attendre la ligne de commande arg

Wasif Hossain
la source
pouvez-vous commenter comment je serais en mesure d'utiliser le visualiseur de différences dans VSCode pour afficher les différences dans git?
Gary Ewan Park
1

Je veux juste ajouter ces barres obliques inverses aux réponses précédentes, je suis sur Windows 10 CMD, et cela ne fonctionne pas sans barres obliques avant les espaces.

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"
Victor Ma
la source
J'ai pu ajouter avec: git config --global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000
0

Je ne suis pas sûr que vous puissiez le faire, mais vous pouvez essayer ces ajouts dans votre fichier gitconfig.

Essayez de remplacer le kdiff3 à partir de ces valeurs pour pointer vers l'exécutable de code Visual Studio.

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

SJMan
la source
Comme je l'ai mentionné dans ma question, je ne pense pas que la fusion sera prise en charge, car je ne pense pas que Visual Studio Code sache comment le faire, je soupçonne qu'il ne pourra que faire des différences et valider la messagerie.
Gary Ewan Park
0

J'ai configuré Visual Studio Code par défaut pour ouvrir le fichier .txt. Et ensuite je l'ai fait utiliser la commande simple: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". Et tout fonctionne plutôt bien.

Zidu
la source
0

Exécutez cette commande dans votre application Mac Terminal

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
Mohammed
la source
2
Cela ne fonctionne pas tout à fait car vous obtenez le message d'erreur: Abandon de la validation en raison d'un message de validation vide. Un indicateur d'attente devra être ajouté. Par exemple - attendre.
Belfield
0

sur Windows 10 en utilisant l'édition 64 bits insiders, la commande devrait être:

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

vous pouvez également renommer le «code-insiders.cmd» en «code.cmd» dans le répertoire «Program Files», de cette façon, vous pouvez maintenant utiliser la commande «code». pour commencer à éditer les fichiers sur le. annuaire

LuisCarlos Rodriguez
la source