web-dev-qa-db-fra.com

Comment voir le fichier diff dans git avant commit

Ça m'arrive souvent:

Je travaille sur un couple de modifications liées en même temps sur une journée ou deux, et quand vient le moment de commettre, je finis par oublier ce qui a changé dans un fichier spécifique. (Ceci est juste un dépôt personnel git, alors je suis d'accord pour avoir plus d'une mise à jour dans un commit.)

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

Quelque chose comme:

git diff --changed /myfile.txt

Et cela afficherait 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 vérification.

374
Sauce McBoss

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

git diff myfile.txt

ou si vous voulez voir les modifications déjà ajoutées

git diff --cached myfile.txt
633
Amber
git diff HEAD file

vous montrera les modifications que vous avez ajoutées à votre arbre de travail depuis le dernier commit. Tous les changements (programmés ou non) seront affichés.

58
ouah

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

15
vhallac

Pour vérifier les différences locales:

git diff myfile.txt

ou vous pouvez utiliser un outil de diff (au cas où vous voudriez annuler 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.

Remarque: Vous pouvez également utiliser . (au lieu de nom de fichier) pour voir les modifications actuelles du répertoire.

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


Pour afficher le fichier réel avant la validation (où master est votre branche), exécutez:

git show master:path/my_file
14
kenorb

Une autre technique à considérer si vous souhaitez 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 l'avant-dernier commit avec:

git diff master^ myfile.txt

et celui avant ça:

git diff master^^ myfile.txt

Vous pouvez également remplacer "~" par le caractère "^" du curseur et "par votre nom de branche" par "maître" si vous ne vous trouvez pas dans la branche principale.

13
anisbet

Je pense que c'est le cas d'utilisation parfait, garantissant une interface graphique. - Bien que je comprenne tout à fait que cela peut également être réalisé assez bien dans la ligne de commande.

Personnellement, chaque commit que je fais est du git-gui. Dans lequel je peux faire plusieurs commits atomiques avec des morceaux/lignes séparés s'il est logique de le faire.

Gut Gui permet de visualiser les diffs dans une interface colorée bien formatée, est plutôt léger. On dirait que c'est quelque chose que vous devriez commander aussi.

12
Lakshman Prasad

Sur macOS, accédez au répertoire racine de git et entrez git diff *

10
catanore

Le meilleur moyen que j’ai trouvé, mis à part l’utilisation d’une interface graphique de validation dédiée, est d’utiliser git difftool -d - Ceci ouvre votre outil de diff en mode de comparaison de répertoires, en comparant HEAD avec le dossier sale en cours.

4
VitalyB
git difftool -d HEAD filename.txt

Ceci montre une comparaison en utilisant la fenêtre fendue du VI dans le terminal.

3
Tomachi