Comment configurer Git pour utiliser un outil différent pour la différence avec le fichier .gitconfig?
J'ai ceci dans mon .gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Ça ne marche pas; il ouvre simplement la ligne de commande diff. Quand je fais
export GIT_EXTERNAL_DIFF=git-chdiff
puis git diff
ouvrira l'outil de différence externe (donc je sais que le script de l'outil de différence externe fonctionne bien). Est-ce que j'ai un problème avec ma configuration .gitconfig pour l'outil de comparaison?
Réponses:
Git propose une gamme de difftools préconfigurés "prêts à l'emploi" (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffus, opendiff, p4merge et araxis), et vous permet également 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
:Maintenant, vous pourrez exécuter "git difftool" et utiliser l'outil de votre choix.
Spécifier votre propre difftool, d'un autre côté, demande un peu plus de travail, voir Comment afficher la sortie 'git diff' avec mon outil / visionneuse de diff préféré?
la source
.com
à.org
. Je peux parcourir jeetworks.org/softwareUn moyen supplémentaire de le faire (à partir de la ligne de commande):
Les deux premières lignes définiront le difftool et le mergetool sur
tkdiff
- modifiez cela selon vos préférences. La troisième ligne désactive l'invite ennuyeuse, donc chaque fois que vous frappez,git difftool
elle lancera automatiquement le difftool.la source
git config --global diff.tool diffmerge
mais quand je l'ai fait,git diff myfile.txt
il m'a quand même donné le diff unix par défautD'autres ont répondu à 99% à ce sujet, mais il reste une étape à franchir. (Ma réponse viendra d'OS X, vous devrez donc modifier les chemins de fichiers en conséquence.)
Vous apportez ces modifications à votre
~/.gitconfig
:Cela corrigera l'outil de diff. Vous pouvez également résoudre ce problème sans modifier le
~/.gitconfig
directement en entrant ces commandes depuis le terminal:Le 1% que tout le monde n'a pas mentionné est que lorsque vous utilisez cela, vous ne pouvez pas simplement exécuter
git diff myfile.txt
; vous devez courirgit difftool myfile.txt
.la source
git config --global --add difftool.prompt false
, cependant. ;)Voici la partie de mon ~ / .gitconfig où je configure les outils de comparaison et de fusion. J'aime diffmerge par SourceGear. (Je l'aime beaucoup, en fait).
Donc, vous voyez, vous définissez un outil nommé "diffmerge" dans la
[difftool "diffmerge"]
ligne. Ensuite, je règle l'outil "diffmerge" par défaut dans le[diff] tool =
section.J'ai évidemment la commande "diffmerge" dans mon chemin, ici. Sinon, je devrais donner un chemin d'accès complet à l'exécutable.
la source
diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
diffmerge --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
ln-s <pathtodiffmerge>/sgdm_cygwin.sh /usr/local/bin/diffmerge
et vous êtes prêt à utiliser la configuration ci-dessus. Ainsi quediffmerge
directement depuis la ligne de commande cygwin avec les chemins cygwin.sgdm.exe
nos joursReproduire ma réponse de ce fil de discussion qui était plus spécifique à la définition au-delà de la comparaison en tant qu'outil de comparaison pour Git. Tous les détails que j'ai partagés sont également utiles pour tout outil de différence en général, alors partagez-les ici:
La première commande que nous exécutons est la suivante:
La commande ci-dessus crée l'entrée ci-dessous
.gitconfig
dans le%userprofile%
répertoire:Ensuite, vous exécutez la commande ci-dessous (l' exécution de cette commande est redondante dans ce cas particulier et n'est requise que dans certains cas spécialisés. Vous le saurez dans peu de temps ):
La commande ci-dessus crée l'entrée ci-dessous dans le
.gitconfig
fichier:La chose à savoir ici est la clé
bc3
. Il s'agit d'une clé bien connue de 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, exécutez simplement lagit difftool --tool-help
commande sur git bash. Il renvoie la liste ci-dessous: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 nouvellement publiée d'un outil bien connu) qui ne correspond à aucune des clés répertoriées ci-dessus, vous êtes libre de le mapper à l'une des clés répertoriées ci-dessus ou à un nouveau clé personnalisée de votre choix.
Et si vous deviez configurer un outil de comparaison
OU
Comme dans mon cas, j'avais installé au-delà de la comparaison 4. au-delà de la comparaison est un outil bien connu pour git mais sa version 4 n'est mappée à aucune des clés existantes par défaut. Vous pouvez donc suivre l'une des approches ci-dessous:
Je peux mapper au-delà de la comparaison 4 outil avec une clé déjà existante
bc3
qui correspond à la version 3 au-delà de la comparaison. Je n'avais pas au-delà de la comparaison de la version 3 sur mon ordinateur, donc je m'en fichais. Si je voulais, j'aurais pu le mapper à l'une des clés prédéfinies dans la liste ci-dessus, par exempleexamdiff
.Si vous mappez une version bien connue des outils à une clé déjà existante / bien connue appropriée, vous n'aurez 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 comparaison de la version 3 sur ma box alors avoir la configuration ci-dessous dans mon
.gitconfig
fichier aurait suffi pour démarrer:Mais si vous voulez changer l'outil associé par défaut, vous finissez par mentionner l'
path
attribut séparément afin que git connaisse le chemin à partir duquel l'exe de votre nouvel outil doit être lancé. Voici l'entrée que les renards git lancer au-delà de comparer 4 à la place. Notez le chemin de l'exe:L'approche la plus claire 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 un tel cas, vous devez exécuter deux commandes en tout, mais votre deuxième commande ne définira pas le chemin de l'exécutable de votre nouvel outil. Au lieu de cela, vous devez définir l'cmd
attribut de votre nouvel outil comme indiqué ci-dessous:L'exécution des commandes ci-dessus crée les entrées ci-dessous dans votre
.gitconfig
fichier:Je vous recommande fortement de suivre l'approche n ° 2 pour éviter toute confusion à l'avenir.
la source
L'ajout de l'un des blocs ci-dessous me permet d'utiliser KDiff3 pour mes environnements de développement Windows et Linux. Cela constitue un bel outil de comparaison et de fusion multiplateforme cohérent.
Linux
les fenêtres
la source
trustExitCode = false
que git vous demandera si la fusion a réussi, plutôt que de se fier à la sortie de l'outil avec un statut vrai ou faux.Si vous voulez avoir une option pour utiliser plusieurs outils de comparaison, ajoutez un alias à .gitconfig
la source
--tool
option. MerciReportez-vous à Microsoft vscode-tips-and-tricks . Exécutez simplement ces commandes dans votre terminal:
git config --global merge.tool code
Mais tout d'abord, vous devez ajouter une
code
commande à votre PATH.la source
Dans Windows, nous devons exécuter la
$git difftool --tool-help
commande pour voir les différentes options telles que:et nous pouvons ajouter n'importe lequel d'entre eux (par exemple winmerge) comme
Pour configurer notepad ++ pour voir les fichiers avant de valider:
et utiliser
$ git commit
ouvrira les informations de validation dans notepad ++la source