“Git diff” ne fait rien

Je suppose que c’est une erreur de configuration quelque part, mais je ne peux pas savoir où. Les commandes régulières de git 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. Cela a été installé via MacPorts et est la version lates (1.7.2.2).

Ce que je vois, c’est que lorsque je lance “git diff” depuis mon espace de travail, il quitte simplement, ne fait rien.

$ 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]   

Cela peut être un comportement attendu puisque je ne suis pas sous un repository 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 pas de changement, il n’y a pas de sortie.

git diff [–options] [-] […]

Ce formulaire permet d’afficher les modifications apscopes par rapport à l’index (zone de transfert pour la prochaine validation). En d’autres termes, les différences sont ce que vous pourriez dire à git d’append à l’index, mais vous ne l’avez toujours pas.

Voir la 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) 
  1. Diff la copie de travail avec l’index
  2. Diff de l’index avec HEAD
  3. Diff la copie de travail avec HEAD

En dehors de votre espace de travail, comme vous l’avez deviné, git ne saura pas quoi différer, vous devez donc spécifier explicitement deux chemins à comparer, d’où le message d’utilisation.

Note: à partir de git 1.8.5 ou 1.9, Q4 2013 :

Lorsque l’utilisateur tape ” git diff ” en dehors d’un arbre de travail , en pensant qu’il est à l’intérieur d’un arbre , le message d’erreur courant qui est un simple trait:

 usage: git diff --no-index   

peut-être pas suffisant pour lui faire comprendre l’erreur.

Ajoutez ” Not a git repository ” au message d’erreur lorsque nous sums entrés dans le mode ” --no-index ” sans option de ligne de commande explicite pour nous demander de le faire.


Voir:

  • commit 286bc123cd ( gitster, Junio ​​C Hamano ), ce qui explique que git diff --no-index peut agir comme un diff (non-git) ordinaire.
  • commettre b214eddfb2 (Dale R. Worley), ce qui clarifie le message d’erreur:

Clarifier la documentation pour ” diff --no-index “.
Indique que lorsque vous n’êtes pas dans un repository, --no-index est implicite et deux arguments sont obligatoires.

Clarifiez le message d’erreur de diff-no-index pour informer l’utilisateur que CWD n’est pas dans un référentiel et que deux arguments sont donc obligatoires.

 To compare two paths outside a working tree: usage: git diff --no-index   

Il ne fait rien si votre répertoire de travail est propre et qu’il n’y a pas de différences par rapport à la dernière mise à jour. Essayez de modifier un fichier, puis lancez git diff à nouveau, puis affichez le diff.

Si vous l’utilisez en dehors d’un repository réel ou d’une copie de travail, son comportement est identique à celui de GNU diff. Donc, vous devez 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 transmettez n’existe pas

 $ git difftool HEAD HEAD^ -- path/that-not-exists 

rien n’arrive