Je suppose que c'est une erreur de configuration quelque part, mais je ne sais pas où. Les commandes git normales semblent fonctionner correctement, mais "git diff" ne fait rien. Pour être sûr, j'ai supprimé les outils de diff externes de mon fichier .gitconfig. Celui-ci a été installé via MacPorts et est la version lates (1.7.2.2).
Ce que je vois, c'est que lorsque j'exécute "git diff" depuis mon espace de travail, il se ferme tout simplement, sans rien faire.
$ git --version
git version 1.7.2.2
$ git diff
$
Si je sauvegarde un répertoire, hors de mon espace de travail racine, taper "git diff" me donne ceci:
$ git diff
usage: git diff [--no-index] <path> <path>
Ce comportement peut être attendu car je ne suis pas sous un référentiel git.
Des idées sur ce que je peux faire pour résoudre ce problème?
La sortie par défaut pour git diff
est la liste des modifications qui n'ont pas été validées/ajoutées à l'index. S'il n'y a aucun changement, alors il n'y a pas de sortie.
git diff [--options] [-] […]
Ce formulaire permet de visualiser les modifications que vous avez apportées par rapport à l'index (zone de transit pour la prochaine validation). En d'autres termes, les différences sont ce que vous pourriez dire à git d'ajouter à l'index, mais ce n'est toujours pas le cas.
Voir documentation pour plus de détails. En particulier, faites défiler les exemples et lisez cette section:
$ git diff # (1)
$ git diff --cached # (2)
$ git diff HEAD # (3)
En dehors de votre espace de travail, comme vous l'avez deviné, git ne saura pas quoi différencier, vous devez donc spécifier explicitement deux chemins à comparer, d'où le message d'utilisation.
Remarque: à partir de git 1.8.5 ou 1.9, Q4 201 :
Lorsque l'utilisateur tape "
git diff
" à l'extérieur d'un arbre de travail , pensant qu'il est à l'intérieur d'un, le message d'erreur actuel qui est un simple liner:
usage: git diff --no-index <path> <path>
peut ne pas être suffisant pour lui faire réaliser l’erreur.
Ajouter "
Not a git repository
"au message d'erreur lorsque nous sommes tombés dans le"--no-index
"sans option de ligne de commande explicite pour nous demander de le faire.
Voir:
git diff --no-index
peut agir comme un normal (non-git) diff
.Clarifier la documentation de "
diff --no-index
".
Indiquez que lorsqu'il n'est pas dans un référentiel,--no-index
est implicite et deux arguments sont obligatoires.Clarifier le message d'erreur de
diff-no-index
pour informer l'utilisateur que CWD n'est pas dans un référentiel et donc deux arguments sont obligatoires.
To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>
Il ne fait rien si votre répertoire de travail est propre et qu'il n'y a aucune différence par rapport à la dernière mise à jour. Essayez de modifier un fichier, puis exécutez à nouveau git diff, et il devrait alors afficher le diff.
Si vous l'utilisez en dehors d'un vrai référentiel ou d'une copie de travail, son comportement est identique au GNU diff. Vous devez donc informer les 2 répertoires ou fichiers à comparer. Exemple:
git diff old_dir new_dir
.
S'il y a une différence entre eux, la sortie vous montrera, comme prévu.
Pas dans votre cas, mais peut-être parce que le fichier que vous passez n'existe pas
$ git difftool HEAD HEAD^ -- path/that-not-exists
rien n'arrive