Configuration de l'outil de comparaison.gitconfig

comment configurer Git pour utiliser un outil différent pour diffing avec le .le fichier gitconfig?

, j'ai ceci dans mon .gitconfig:

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

il ne fonctionne pas; il ouvre simplement la ligne de commande habituelle diff. Quand je fais

export GIT_EXTERNAL_DIFF=git-chdiff

puis git diff va ouvrir l'outil de diffing externe (donc je sais que l'outil de diff externe script fonctionne très bien). Dois-je quelque chose de mal avec mon .la configuration gitconfig pour la diff outil?

112
git
demandé sur Peter Mortensen 2011-06-20 18:08:56

6 réponses

git offre une gamme de difftools préconfigurés" out-of-the-box " (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffus, opendiff, p4merge et araxis), et vous permet également de 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 exécuter "git difftool" et utiliser l'outil de votre choix.

Spécifier votre propre difftool, d'un autre côté, prend un peu plus de travail, voir Comment puis-je voir 'git diff' sortie avec mon outil/ viewer préféré de diff?

102
répondu Fredrik Pihl 2018-07-14 07:36:18

une autre façon 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 positionneront le difftool et le mergetool à tkdiff - changez cela en fonction de vos préférences. La troisième ligne désactive l'invite ennuyante ainsi chaque fois que vous appuyez sur git difftool il lancera automatiquement le difftool.

136
répondu Omer Dagan 2018-07-20 23:27:23

D'autres ont fait une réponse de 99% à ce sujet, mais il y a un pas de côté. (Ma réponse sera fournie par OS X, vous devrez donc modifier les chemins des fichiers en conséquence.)

vous apportez ces changements à votre ~/.gitconfig :

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

cela va réparer l'outil diff. Vous pouvez également corriger cela sans éditer le ~/.gitconfig directement 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 tous les autres n'a pas mentionné est en utilisant ce que vous ne pouvez pas juste exécuter git diff myfile.txt ; vous devez exécuter git difftool myfile.txt .

42
répondu tgoza 2018-07-20 23:31:53

Voici la partie de mon ~/.gitconfig où je configure les outils diff et merge. J'aime diffmerge by SourceGear. (Je l'aime très très beaucoup, comme une question de 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 appelé" diffmerge "dans la ligne [difftool "diffmerge"] . Puis je mets l'outil "diffmerge "par défaut dans la section [diff] tool = .

j'ai évidemment la commande "diffmerge" sur mon chemin, ici. Sinon, j'avais besoin de donner un plein chemin d'accès au fichier exécutable.

30
répondu Dan Ray 2011-06-20 14:24:01

Ajouter un des blocs ci-dessous fonctionne pour moi d'utiliser KDiff3 pour mes environnements de développement Windows et Linux. Cela rend un outil de différence et de fusion inter-plate-forme cohérent agréable.

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

Windows

[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
12
répondu moodboom 2018-07-20 23:29:32

reproduisant ma réponse de ce fil qui était plus spécifique à la mise au-delà de comparer comme outil diff pour Git. Tous les détails que j'ai partagé sont également utiles pour n'importe quel outil diff en général donc le partage ici:

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

git config --global diff.tool bc3

la commande ci-dessus crée l'entrée ci-dessous dans .gitconfig trouvée dans %userprofile% répertoire:

[diff]
    tool = bc3

ensuite, vous exécutez la commande ci-dessous ( exécuter cette commande est redondant dans ce cas particulier et est nécessaire dans certains cas spécialisés seulement. Vous le saurez en peu de temps ):

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

la commande ci-dessus crée l'entrée ci-dessous dans .gitconfig fichier:

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

la chose à savoir ici est la clé bc3 . C'est une clé bien connue de git correspondant à une version particulière de bien connu outils de comparaison disponibles sur le marché ( bc3 correspond à la 3ème version de Beyond Compare tool). Si vous voulez voir toutes les clés prédéfinies, lancez la commande git difftool --tool-help sur git bash. Il retourne la liste suivante:

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 touches ci-dessus, ou définir une clé personnalisée de votre propre. Si vous voulez mettre en place un nouvel outil totalement(ou une nouvelle version de l'outil bien connu) qui ne correspond à aucune des clés énumérés ci-dessus, alors vous êtes libre de carte à l'une des clés énumérées ci-dessus ou à une nouvelle clé personnalisée de votre propre.

Que faire 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é qui n'est pas mappé à des clés prédéfinies dans git ?

comme dans mon cas, j'avais installé beyond compare 4. beyond compare est un outil bien connu de git, mais sa version 4 n'est pas mappée à l'une des clés existantes par défaut. Vous pouvez donc suivre l'une des approches suivantes:

  1. je peux cartographier au-delà de comparer 4 Outil à déjà existante clé bc3 qui correspond à au-delà de comparer 3 version. Je n'avais pas beyond compare version 3 sur mon ordinateur donc je n'ai pas de soins. Si je le voulais, j'aurais pu le mapper à n'importe laquelle des clés prédéfinies dans la liste ci-dessus aussi par exemple examdiff .

    si vous cartographiez la version bien connue des outils pour s'approprier déjà existant / bien- clés connus alors vous n'avez pas besoin d'exécuter la deuxième commande que leur installation le chemin est déjà connu pour git .

    Pour par exemple si j'avais installé au-delà de comparer la version 3 sur ma boîte alors ayant la configuration ci-dessous dans mon .gitconfig aurait suffi pour aller de l'avant:

    [diff]
    tool = bc3
    

    mais si vous voulez changer l'outil associé par défaut, vous finissez par mentionner l'attribut path séparément afin que git puisse connaître le chemin à partir duquel votre nouvel outil exe doit être lancé. Voici l'entrée qui renards git à lancer beyond compare 4 à la place. Remarque le fichier exe du chemin:

    [difftool "bc3"]
    path = c:/program files/Beyond Compare 4/bcomp.exe
    
  2. le plus propre l'approche est la définition d'une nouvelle clé pour le nouvel outil de comparaison ou d'une nouvelle version d'un outil bien connu. Comme dans mon cas, j'ai défini une nouvelle clé bc4 , de sorte qu'il est facile à retenir. Dans ce cas, vous devez exécuter deux commandes en tout, 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 cmd attribut 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\""
    

    exécuter les commandes ci-dessus crée ci-dessous les entrées 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 # 2 pour éviter toute confusion pour vous à l'avenir.

6
répondu RBT 2018-07-21 04:36:02