Récemment, j'utilisais GitExtension 2.46, mais la version Git qui a le même est 1.9.4.msysgit.2. Désireux d'utiliser uniquement les commandes Git, j'ai désinstallé GitExtension et installé la dernière version disponible de Git et KDiff3 .
Lorsque je fais une fusion et que j'ai des conflits, j'exécute la commande suivante:
$ git mergetool
Ensuite, je reçois le message:
L'outil de fusion kdiff3 n'est pas disponible en tant que «kdiff3».
Je suppose que ce doit être par le chemin KDiff3.
Environnement
- Système d'exploitation: Windows 10
- Git 2.6.1.windows.1
- KDiff3 0.9.98 (64 bits)
Des questions:
Que dois-je configurer dans le fichier .gitconfig pour que la commande
$ git mergetool
ouvre l'interface graphique KDiff3 avec les versions LOCAL , REMOTE , BASE et MERGED du fichier en conflit?Comment le configurer pour l'utiliser avec diff-tool?
Réponses:
Ces sites étaient très utiles, presque, mergetool et difftool . J'ai utilisé la configuration globale, mais peut être utilisé par le référentiel sans problème. Il vous suffit d'exécuter les commandes suivantes:
L'utilisation de l'
trustExitCode
option dépend de ce que vous voulez faire lorsque l'outil diff revient. De la documentation :la source
git config --global --add diff.guitool kdiff3
en ceci:git config --global --add diff.tool kdiff3
--add
ajoutera une deuxième ou une troisième entrée lorsqu'elle sera invoquée plusieurs fois. C'est difficile à corriger plus tard, car il ne peut pas simplement être supprimé avec--remove
. La définition d'une valeur sans--add
devrait être correcte.Juste pour étendre la réponse de @ Joseph :
Après avoir appliqué ces commandes, votre
.gitconfig
fichier global aura les lignes suivantes (pour accélérer le processus, vous pouvez simplement les copier dans le fichier) :la source
.gitconfig
fichier que je modifiais n'était pas celui utilisé. Voir stackoverflow.com/questions/2114111/… pour identifier celui (s) en cours de chargement. (2) Ne pas mélanger et assortircmd =
etpath =
dans gitconfig, TL; DR: supprimer cmd et simplement utiliser le cheminPour les utilisateurs Mac
Voici la réponse acceptée de @ Joseph, mais avec l'emplacement par défaut du chemin d'installation Mac de
kdiff3
(Notez que vous pouvez copier et coller cela et l'exécuter en une seule fois)
la source
--add
car cela peut entraîner 2 entrées de configuration si vous exécutez la commande deux fois. C'est un gâchis de nettoyer cela, car vous ne pouvez plus supprimer une seule entrée. Voir git-scm.com/docs/git-config : "Plusieurs lignes peuvent être ajoutées à une option"Eh bien, le problème est que Git ne peut pas trouver KDiff3 dans le% PATH%.
Dans une installation typique Unix tous les exécutables résident dans plusieurs endroits bien connus (
/bin/
,/usr/bin/
,/usr/local/bin/
, etc.), et on peut invoquer un programme en tapant simplement son nom dans un processeur shell (par exemplecmd.exe
:)).Dans Microsoft Windows, les programmes sont généralement installés dans des chemins dédiés, vous ne pouvez donc pas simplement taper
kdiff3
unecmd
session et lancer KDiff3.La solution difficile: vous devez indiquer à Git où trouver KDiff3 en spécifiant le chemin complet vers
kdiff3.exe
. Malheureusement, Git n'aime pas les espaces dans la spécification de chemin dans sa configuration, donc la dernière fois que j'en ai eu besoin, je me suis retrouvé avec ces anciens "C: \ Progra ~ 1 ... \ kdiff3.exe" comme s'il était tard Années 1990 :)La solution simple: modifiez les paramètres de votre ordinateur et incluez le répertoire avec kdiff3.exe dans% PATH%. Testez ensuite si vous pouvez l'appeler à partir de cmd.exe par son nom, puis exécutez Git.
la source
J'avais besoin d'ajouter les paramètres de ligne de commande ou KDiff3 ne s'ouvrirait que sans fichiers et me demanderait de base, local et distant. J'ai utilisé la version fournie avec TortoiseHg .
De plus, je devais recourir aux bons vieux noms de fichiers DOS 8.3.
Cependant, cela fonctionne correctement maintenant.
la source
Pour modifier la réponse de kris , en commençant par Git 2.20 (Q4 2018), la commande appropriée pour sera
git mergetool
C'est parce que "
git mergetool
" a appris à prendre l'--[no-]gui
option " ", tout comme "git difftool
".Voir commit c217b93 , commit 57ba181 , commit 063f2bd (24 octobre 2018) par Denton Liu (
Denton-L
) .(Fusionné par Junio C Hamano -
gitster
- en commit 87c15d1 , 30 oct.2018 )la source
(En essayant de savoir comment utiliser kdiff3 à partir de WSL git, je me suis retrouvé ici et j'ai obtenu les dernières pièces, donc je vais publier ma solution pour quiconque trébuche également ici tout en essayant de trouver cette réponse)
Comment utiliser kdiff3 comme outil de diff / fusion pour WSL git
Avec la mise à jour Windows 1903, c'est beaucoup plus facile; utilisez simplement wslpath et il n'est pas nécessaire de partager TMP de Windows vers WSL car le côté Windows a désormais accès au système de fichiers WSL via \ wsl $:
Avant la mise à jour Windows 1903
Étapes pour utiliser kdiff3 installé sur Windows 10 comme outil de diff / fusion pour git dans WSL:
la source