Pourquoi ne pas git diff` invoquer externe outil de comparaison?
Dans mon référentiel, si je tape
$ git diff some-file
ou
$ git difftool some-file
- Je obtenir le terminal diff affichage. Je pense que cela ne devrait pas arriver, parce que j'ai mis en externe, les diff outil, comme illustré par la sortie de git config -l
:
$ git config -l
user.name=blah blah
user.email=blah blah
http.sslverify=true
diff.external=/home/daniel/bin/git-diff <--This is the important line
push.default=simple
core.filemode=false
core.editor=gedit
alias.tree=log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)
%C(black)[%cr]%C(reset) %x09%C(black)%an: %s %C(reset)'
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.url=https://daniel@skynet/git/pyle.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.daniel.remote=origin
branch.daniel.merge=refs/heads/daniel
Git-diff fichier référencé dans la diff.external
ligne ressemble à ceci
#!/bin/bash
meld $2 $5
Pourquoi ne pas git diff
invoquer fondre?
- Je obtenir le même comportement si j'ai mis des choses en place pour que git config -l
a la ligne suivante:
diff.tool = meld
ou
diff.external = usr/bin/meld
Note: Autres référentiels sur ma machine n'ont pas ce problème.
Liés, mais ne sont pas équivalentes, de SORTE que des questions:
- Quelle est la différence entre
git diff
etgit difftool
? - Ne peut pas faire de git diff utiliser la commande diff.externe externe outil de comparaison
- Pourquoi êtes-vous à l'aide de la deuxième et de la cinquième arguments?
- Ma compréhension est que git diff passe sept arguments vers l'outil de comparaison et qui se fondent seulement besoin de deux d'entre eux.
Vous devez vous connecter pour publier un commentaire.
Oui, il devrait: diff.externe est pour "en-terminal diff affichage".
(à partir de
git config
de la page de manuel)La question, vous avez le lien explique pourquoi
meld
ne serait pas en mesure de jouer le rôle de "l'externe diff".La visualisation d'un diff visuellement avec un autre outil est fait avec:
meld
peut être configuré sous Windows comme un difftool: voir "Git Diff et Fondre sur Windows".Si vous vouliez configurer fondre pour git diff, vous pourriez (sur Ubuntu) utilisation de l'option
diff.externe
, mais avec un script:git difftool
semble être la solution. J'ai essayé à l'aide d'un script, mais pour une raison qui ne fonctionne pas.Il semble que
git diff
(au moins, en tant que degit
version1.7.12.4
) ne fonctionnera pas autre chose que de l'intérieur, la console seule diff sur un fichier qui est dans le "à la fois modifiée" de l'état.git mergetool
ouvrages sur ces fichiers, mais.git version 2.5.4 (Apple Git-61)
. La console de seulement 3 voies-fusion de flux de travail est un assez gros point douloureux. Il y a vraiment une énorme pénurie de console compatible natif diff outils. Je crois que le chemin que je vais prendre est de permettre à git pour vider les marqueurs de conflit dans les fichiers, et ensuite utiliser un outil simple, que je vais écrire, à ces processus pour générer lisible diff sorties.Habitude, je veux juste vérifier si les changements que je suis sur le point de case sont correctes. J'ai donc suivi la procédure proposée ici (similaire à celui noté par VonC). Toutefois, l'exécution de
git difftool
n'a toujours pas ouvert fondre. Ensuite, j'ai créé un alias:Enregistrer dans votre .bashrc ou .zshrc ou la correspondante de la configuration de votre shell. C'est essentiellement compare l'état de la branche avec le précédent commit sur la branche.
Faire un
git-diff
pour voir les modifications sur un fichier par fichier ougit-diff --dir
pour voir tous les changements dans un répertoire de vue.