546 votes

Comment voir la différence entre les fichiers dans git avant la livraison ?

Cela m'arrive souvent :

Je travaille sur plusieurs modifications connexes en même temps au cours d'un jour ou deux, et quand il est temps de livrer, je finis par oublier ce qui a changé dans un fichier spécifique. (C'est juste un repo git personnel, donc je suis ok pour avoir plus d'une mise à jour dans un commit).

Existe-t-il un moyen de prévisualiser les changements entre mon fichier local, qui est sur le point d'être archivé, et le dernier commit pour ce fichier ?

Quelque chose comme :

git diff --changed /myfile.txt

Et il s'imprimerait quelque chose comme :

line 23
  (last commit): var = 2+2
  (current):     var = myfunction() + 2

line 149
  (last commit): return var
  (current):     return var / 7

De cette façon, je pouvais voir rapidement ce que j'avais fait dans ce fichier depuis la dernière fois qu'il avait été enregistré.

895voto

Amber Points 159296

Si vous voulez voir ce que vous n'avez pas git add encore :

git diff myfile.txt

ou si vous voulez voir les changements déjà ajoutés

git diff --cached myfile.txt

29 votes

Vérifier git add -p . Examinez chaque modification, approuvez de manière sélective les modifications apportées à l'étape, abandonnez à tout moment si vous changez d'avis, et modifiez même un morceau en ligne. Je n'ai jamais git add sans elle.

5 votes

Comment sortir du fichier ?

10 votes

@Kick Essayez de presser q

77voto

ouah Points 75311
git diff HEAD file

vous montrera les changements que vous avez ajoutés à votre arbre de travail depuis la dernière livraison. Tous les changements (indexés ou non) seront affichés.

1 votes

Votre solution fonctionne. Mais je suis un peu confus. HEAD pointe vers le dernier numéro de commit. Ainsi, lorsque nous git add, l'index du répertoire de travail est mis à jour et non le HEAD. Alors comment cela montre la différence.

23voto

kenorb Points 2464

Pour vérifier les différences locales :

git diff myfile.txt

ou vous pouvez utiliser un outil de comparaison (au cas où vous voudriez revenir sur certaines modifications) :

git difftool myfile.txt

Pour utiliser git difftool plus efficacement, installez et utilisez votre outil graphique préféré tel que Meld, DiffMerge ou OpenDiff.

Note : Vous pouvez également utiliser . (au lieu du nom de fichier) pour voir les changements actuels dans le répertoire.

Afin de vérifier les changements pour chaque ligne, utilisez : git blame qui affichera quelle ligne a été commitée dans quel commit.


Pour voir le fichier actuel avant la livraison (où master est votre branche), exécutez :

git show master:path/my_file

20voto

anisbet Points 1597

Une autre technique à considérer si vous voulez comparer un fichier au dernier commit qui est plus pédant :

git diff master myfile.txt

L'avantage de cette technique est que vous pouvez également comparer avec l'avant-dernier commit :

git diff master^ myfile.txt

et celle d'avant :

git diff master^^ myfile.txt

Vous pouvez également substituer '~' au caractère '^' et 'votre nom de branche' à 'master' si vous n'êtes pas sur la branche master.

0 votes

Cette approche est très polyvalente. C'est très bien.

18voto

vhallac Points 6425

Avez-vous essayé -v (o --verbose ) pour l'option git commit ? Il ajoute le diff du commit dans l'éditeur de message.

0 votes

Bonne réponse. Cela peut fournir des informations dans l'éditeur de commit, ce qui me permet de commettre plus facilement. Existe-t-il un moyen de fermer la zone d'information de l'éditeur de commit ? Changes not staged for commit: ce qui peut rendre l'éditeur de commit plus propre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X