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?
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?
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.
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
.
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.
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
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:
-
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 exempleexamdiff
.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
-
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éfinircmd
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.