web-dev-qa-db-fra.com

git: Pourquoi est-ce que git diff ne montre aucune différence?

Si je lance 'statut git' sur mon dépôt, cela donne:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified: myfile

Cependant, si je fais un 'git diff myfile', cela ne montre aucune différence. Est-ce parce que j'ai apporté une modification et que je l'ai supprimée pour qu'elle revienne à l'original?

Devrais-je exécuter 'git checkout myfile' pour l'effacer?

35
Noam

Votre fichier est déjà mis en scène pour être commis. Vous pouvez montrer ses différences en utilisant l'option --cached de git.

git diff --cached myfile

Pour le décomposer, faites ce que le statut de git suggère dans sa sortie;)

Vous pouvez vérifier L’index Git Pour plus d’informations.

58
Marcus Borkenhagen

J'ai une préférence pour l'alias --staged, principalement parce que je trouve que --staged signifie réellement ce que je veux faire, c'est-à-dire qu'il me montre les différences mises en scène.

git diff --staged

La réponse acceptée est correcte et je n’y ai aucun scrupule. Personnellement, je pense que --cached donne l'impression que git diff met en cache la réponse et me montre des résultats pré-calculés ou quelque chose du genre.

J'aime aussi git diff HEAD parce que c'est plus général. Il rassemble deux concepts que la plupart des gens connaissent, à savoir:

  1. git diff <commit> vous permet de voir la différence entre votre position actuelle et un commit précédent.

  2. HEAD (ou head parce que mettre en attente est ennuyeux) est une référence à la pointe de votre branche. (Pour ceux qui comptent les frappes, @ est un alias pour HEAD.)

Combinés, ces deux concepts généralement utiles ont pour résultat:

git diff head
git diff @
8
Liyan Chang

Pour comparaison entre zone de stockage intermédiaire et référentiel

$git diff --staged

Pour une comparaison entre travail et stockage

$ git diff 

mais si un fichier est modifié et ajouté à la zone de transfert ($ git add fileName), nous essayons de voir la différence avec ($ git diff). Cela ne renverra aucune différence puisque le fichier se trouve dans la zone de transfert et ne sera pas comparé au référentiel.

0
Goyal Vicky