Depuis Git1.6.3, vous pouvez utiliser la fonction git difftool script : voir ma réponse ci-dessous .
C'est peut-être ça. article vous aidera. Voici les meilleures parties :
Il y a deux façons différentes de spécifier un outil de comparaison externe.
La première est la méthode que vous avez utilisée, en définissant la variable GIT_EXTERNAL_DIFF. Cependant, la variable est censée pointer vers le chemin complet de l'exécutable. De plus, l'exécutable spécifié par GIT_EXTERNAL_DIFF sera appelé avec un ensemble fixe de 7 arguments :
path old-file old-hex old-mode new-file new-hex new-mode
Comme la plupart des outils de diff nécessitent un ordre différent (et seulement certains) des arguments, vous devrez très probablement spécifier un script enveloppant à la place, qui appelle à son tour le véritable outil de diff.
La deuxième méthode, que je préfère, consiste à configurer l'outil de diff externe via "git config" . Voici ce que j'ai fait :
1) Créer un wrapper script "git-diff-wrapper.sh" qui contient quelque chose comme
-->8-(snip)--
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"<path_to_diff_executable>" "$2" "$5" | cat
--8<-(snap)--
Comme vous pouvez le voir, seuls le deuxième ("old-file") et le cinquième ("new-file") arguments seront transmis à l'outil de comparaison.
2) Type
$ git config --global diff.external <path_to_wrapper_script>
à l'invite de commande, en remplaçant par le chemin d'accès à "git-diff-wrapper.sh", de sorte que votre ~/.gitconfig contienne
-->8-(snip)--
[diff]
external = <path_to_wrapper_script>
--8<-(snap)--
Assurez-vous d'utiliser la syntaxe correcte pour spécifier les chemins vers le wrapper script et diff. c'est-à-dire utilisez des slashs avant au lieu de backslashes. Dans mon cas, j'ai
[diff]
external = \"c:/Documents and Settings/sschuber/git-diff-wrapper.sh\"
dans .gitconfig et
"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
dans le wrapper script. Attention au "chat" qui suit !
(Je suppose que le ' | cat
est nécessaire uniquement pour certains programmes qui peuvent ne pas renvoyer un état de retour correct ou cohérent. Vous pouvez essayer sans le chat de fin si votre outil de comparaison a un statut de retour explicite).
( Diomidis Spinellis ajoute dans les commentaires :
El cat
est nécessaire, car diff(1)
par défaut, se termine avec un code d'erreur si les fichiers sont différents.
Git s'attend à ce que le programme diff externe ne se termine avec un code d'erreur que si une erreur réelle se produit, par exemple s'il manque de mémoire.
En faisant passer la sortie de git
a cat
le code d'erreur non nul est masqué.
Plus efficacement, le programme pourrait simplement exécuter exit
avec un argument de 0.)
C'est (l'article cité ci-dessus) la théorie de l'outil externe. défini par le fichier de configuration (pas par le biais d'une variable d'environnement).
En pratique (toujours pour la définition du fichier de configuration de l'outil externe), vous pouvez vous référer à :
115 votes
Vous pouvez utiliser "git difftool" au lieu de "git diff" dans toutes les nouvelles versions de git. Cela ouvrira un programme de comparaison visuelle.
0 votes
Concernant le nouveau difftool script, j'ai ajouté une réponse ci-dessous : stackoverflow.com/questions/255202/
2 votes
Gitx - gitx.frim.nl . Nuff said.
1 votes
Vous trouverez un bref tutoriel ici : nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy
0 votes
git difftool -tool=opendiff
remplacez simplementopendiff
avec n'importe quoi.5 votes
Allez dans votre dépôt dans Git Bash. Tapez
git config diff.tool winmerge
. Vérifiez que cela a fonctionné en tapantgit difftool
. Débarrassez-vous de la saisie rapidegit config --global difftool.prompt false
. Je recommande p4merge au lieu de winmerge.0 votes
(1.) pour lister les outils de diff externes supportés font
git difftool --tool-help
(2.) à ouvrir à l'aide d'un outil de diff spécifique tel quevimdiff
juste fairegit difftool --tool=vimdiff
. Il s'agit d'un résumé de la solution écrite par @JakubNarebski