Configuration de l’outil de diff avec .gitconfig

Comment configurer Git pour utiliser un autre outil de différenciation avec le fichier .gitconfig?

J’ai ceci dans mon .gitconfig:

[diff] tool = git-chdiff #also sortinged /bin/git-chdiff 

Ça ne marche pas; il ouvre simplement la ligne de commande régulière diff. Quand je fais

 export GIT_EXTERNAL_DIFF=git-chdiff 

Ensuite, git diff ouvrira l’outil de différenciation externe (donc je sais que le script de l’outil de diff externe fonctionne correctement). Est-ce que quelque chose ne va pas avec ma configuration .gitconfig pour l’outil de diff?

Git propose une gamme de difftools préconfigurés “out-of-the-box” (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge et araxis). pour spécifier le vôtre. Pour utiliser l’un des difftools préconfigurés (par exemple, “vimdiff”), vous ajoutez les lignes suivantes à votre ~/.gitconfig :

 [diff] tool = vimdiff 

Maintenant, vous pourrez lancer “git difftool” et utiliser votre outil de prédilection.

La spécification de votre difftool, par contre, demande un peu plus de travail, voir Comment afficher la sortie ‘git diff’ avec mon outil / visualiseur de diff préféré?

Un moyen supplémentaire de le faire (à partir de la ligne de commande):

 git config --global diff.tool tkdiff git config --global merge.tool tkdiff git config --global --add difftool.prompt false 

Les deux premières lignes définissent le difftool et le mergetool sur tkdiff – modifiez-le en fonction de vos préférences. La troisième ligne désactive l’invite agaçante. Chaque fois que vous appuyez sur git difftool elle lance automatiquement difftool.

D’autres ont répondu à 99% à cette question, mais il rest une étape à franchir. (Ma réponse proviendra d’OS X, vous devrez donc modifier les chemins des fichiers en conséquence.)

Vous apportez ces modifications à votre ~/.gitconfig :

 [diff] tool = diffmerge [difftool "diffmerge"] cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE 

Cela va corriger l’outil de diff. Vous pouvez également résoudre ce problème sans modifier directement le ~/.gitconfig en entrant ces commandes à partir du terminal:

 git config --global diff.tool diffmerge git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE" 

Le 1% que tout le monde a omis de mentionner est lorsque vous utilisez ceci vous ne pouvez pas simplement lancer git diff myfile.txt ; vous devez lancer git difftool myfile.txt .

Voici la partie de mon ~ / .gitconfig où je configure les outils de diff et de fusion. J’aime diffmerge par SourceGear. (Je l’aime vraiment beaucoup, en fait).

 [merge] tool = diffmerge [mergetool "diffmerge"] cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\"" trustExitCode = false [diff] tool = diffmerge [difftool "diffmerge"] cmd = diffmerge \"$LOCAL\" \"$REMOTE\" 

Donc, vous voyez, vous définissez un outil nommé “diffmerge” dans la ligne [difftool "diffmerge"] . Ensuite, je mets l’outil “diffmerge” par défaut dans l’ [diff] tool = section.

J’ai évidemment la commande “diffmerge” sur mon chemin, ici. Sinon, je devrais donner un chemin complet à l’exécutable.

Ajouter l’un des blocs ci-dessous me permet d’utiliser KDiff3 pour mes environnements de développement Windows et Linux. Cela en fait un outil de fusion et de diff multiplateforme cohérent.

Linux

 [difftool "kdiff3"] path = /usr/bin/kdiff3 trustExitCode = false [difftool] prompt = false [diff] tool = kdiff3 [mergetool "kdiff3"] path = /usr/bin/kdiff3 trustExitCode = false [mergetool] keepBackup = false [merge] tool = kdiff3 

les fenêtres

 [difftool "kdiff3"] path = C:/Progra~1/KDiff3/kdiff3.exe trustExitCode = false [difftool] prompt = false [diff] tool = kdiff3 [mergetool "kdiff3"] path = C:/Progra~1/KDiff3/kdiff3.exe trustExitCode = false [mergetool] keepBackup = false [merge] tool = kdiff3 

Reproduire ma réponse à partir de ce fil de discussion qui était plus spécifique à la définition au-delà de l’outil de comparaison pour Git. Tous les détails que j’ai partagés sont également utiles pour tout outil de diff en général, donc partagez-le ici:

La première commande que nous exécutons est la suivante:

 git config --global diff.tool bc3 

La commande ci-dessus crée une entrée dans .gitconfig trouvée dans le %userprofile% :

 [diff] tool = bc3 

Ensuite, vous exécutez la commande ci-dessous ( Exécuter cette commande est redondante dans ce cas particulier et est requirejs dans certains cas spécialisés seulement. Vous le saurez rapidement ):

 git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe" 

La commande ci-dessus crée une entrée sous le fichier .gitconfig :

 [difftool "bc3"] path = c:/program files/Beyond Compare 3/bcomp.exe 

La chose à savoir ici est la clé bc3 . Ceci est une clé bien connue pour git correspondant à une version particulière des outils de comparaison bien connus disponibles sur le marché ( bc3 correspond à la 3ème version de l’outil Beyond Compare). Si vous voulez voir toutes les clés prédéfinies, lancez simplement la commande git difftool --tool-help sur git bash. Il retourne ci-dessous la liste:

 vimdiff vimdiff2 vimdiff3 araxis bc bc3 codecompare deltawalker diffmerge diffuse ecmerge emerge examdiff gvimdiff gvimdiff2 gvimdiff3 kdiff3 kompare meld opendiff p4merge tkdiff winmerge xxdiff 

Vous pouvez utiliser l’une des clés ci-dessus ou définir votre propre clé personnalisée. Si vous souhaitez configurer un nouvel outil (ou une version récemment publiée d’un outil connu) qui ne correspond à aucune des clés listées ci-dessus, vous êtes libre de le mapper avec une des clés listées ci-dessus ou avec une nouvelle clé. clé personnalisée de votre choix.

Et si vous devez configurer un outil de comparaison qui est

  • Absolument nouveau sur le marché

OU

  • Une nouvelle version d’un outil existant bien connu a été publiée et n’est pas associée à des clés prédéfinies dans git ?

Comme dans mon cas, je l’avais installé au-delà de comparer 4. Au-delà de comparer est un outil bien connu pour git mais sa version 4 n’est associée à aucune des clés existantes par défaut. Vous pouvez donc suivre l’une des approches ci-dessous:

  1. Je peux mapper au-delà de l’outil compare 4 à la clé déjà existante bc3 qui correspond à une version sans comparaison 3. Je n’avais pas dépassé la version 3 de mon ordinateur, alors je m’en fichais. Si je voulais, je pourrais avoir mappé à l’une des clés prédéfinies dans la liste ci-dessus, par exemple examdiff .

    Si vous associez une version bien connue des outils à une clé déjà existante / bien connue, vous n’avez pas besoin d’exécuter la deuxième commande car leur chemin d’installation est déjà connu de git .

    Par exemple, si j’avais installé au-delà de la version 3 de comparaison sur ma boîte, alors avoir sous la configuration dans mon fichier .gitconfig aurait été suffisant pour démarrer:

     [diff] tool = bc3 

    Mais si vous voulez changer l’outil associé par défaut, vous finissez par mentionner l’atsortingbut de path séparément afin que git puisse connaître le chemin à partir duquel vous devez lancer l’exe de votre nouvel outil. Voici l’entrée que les renards vont lancer au-delà de 4 comparaisons à la place. Notez le chemin de l’exe:

     [difftool "bc3"] path = c:/program files/Beyond Compare 4/bcomp.exe 
  2. L’approche la plus propre consiste à définir une nouvelle clé pour le nouvel outil de comparaison ou une nouvelle version d’un outil bien connu. Comme dans mon cas, j’ai défini une nouvelle clé bc4 pour qu’elle soit facile à retenir. Dans ce cas, vous devez exécuter deux commandes, mais votre seconde commande ne définira pas le chemin de l’exécutable de votre nouvel outil. Au lieu de cela, vous devez définir l’atsortingbut cmd pour votre nouvel outil comme indiqué ci-dessous:

     git config --global diff.tool bc4 git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\"" 

    L’exécution des commandes ci-dessus crée des entrées ci-dessous dans votre fichier .gitconfig :

     [diff] tool = bc4 [difftool "bc4"] cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\" 

Je vous recommande fortement de suivre l’approche n ° 2 pour éviter toute confusion pour vous à l’avenir.