Voir les modifications d'un fichier spécifique à l'aide de git

472

Je sais que je peux utiliser la git diffcommande pour vérifier les modifications, mais, pour autant que je sache, elle est basée sur un répertoire. Cela signifie qu'il donne toutes les modifications de tous les fichiers du répertoire courant.

Comment puis-je vérifier uniquement les modifications dans un fichier spécifique? Dites, je l' ai changé les fichiers file_1.rb, file_2.rb..., file_N.rbmais je ne suis intéressé que les modifications dans le fichier file_2.rb. Comment puis-je vérifier ces modifications (avant de valider)?

Mellon
la source
4
Ma principale question est de savoir comment vérifier la différence pour un fichier spécifique avant de valider toutes les modifications. Le journal Git est pour les changements engagés, je suppose.
Mellon
1
Dans mon expérience, il vaut mieux utiliser un outil visuel comme GitKraken
Giovanni Benussi

Réponses:

642

Utilisez une commande comme:

git diff file_2.rb

Consultez la git diffdocumentation pour obtenir des informations complètes sur les types de différences pour lesquelles vous pouvez obtenir des différences.

Normalement, git diffmontre à lui seul toutes les modifications dans l'ensemble du référentiel (pas seulement le répertoire courant).

Greg Hewgill
la source
101
Si vous voulez voir les modifications d'un fichier que vous avez déjà "git add" 'ed, c'est "git diff --cached"
Ana Betts
8
Si vous souhaitez vérifier un fichier par rapport à un commit plus ancien: $ git diff [commit hash] file_2.rb
Alex Angelico
2
Comment quitter la vue diff?
Garry
1
Ou utilisez SourceTree.
GeneCode
4
@GurpreetsinghDhanju Essayez d'appuyer sur Q
110

Une autre méthode (mentionnée dans cette réponse SO ) conservera l'historique dans le terminal et vous donnera un historique très complet du fichier lui-même:

git log --follow -p -- file

Cela montrera tout l'historique du fichier (y compris l'historique au-delà des renommées et avec des différences pour chaque changement).

En d'autres termes, si le fichier nommé bar a déjà été nommé foo, alors git log -p bar (sans l'option --follow) n'affichera que l'historique du fichier jusqu'au point où il a été renommé - il n'affichera pas le l'historique du fichier quand il était connu comme foo. L'utilisation de git log --follow -p bar affichera l'historique complet du fichier, y compris toutes les modifications apportées au fichier lorsqu'il était appelé foo.

AJ Zane
la source
3
Fonctionne bien avec --stat pour avoir un aperçu des lignes ajoutées / supprimées.
Tom Hale
2
Oui, cette réponse doit être classée au moins plus haut, suivre l'historique, pas seulement le diff actuel, ni avoir à garder une trace de tous les hachages de validation. Utilisation assez simple mais très puissante dans les changements
Ilhicas
87

Vous pouvez utiliser gitk [filename]pour voir le journal des modifications

da Rocha Pires
la source
2
Cela afficherait l'historique des validations sur le fichier, ce qui pourrait parfois être ce dont vous avez besoin.
r1k0
26

Vous pouvez utiliser la commande ci-dessous pour voir qui a changé quoi dans un fichier.

git blame <filename>

Vineet
la source
4
C'est la meilleure réponse car elle vous indique qui a fait quel changement et quand, ainsi que l'engagement auquel le changement faisait partie. Pour filtrer un changement spécifique, faites simplement git blame <filename> | grep <searchfor><searchfor>est une valeur courte. Par exemple, pour savoir qui a changé fooà baren dist/index.php, vous utiliseriezgit blame dist/index.php | grep bar
Kraang Premier
15

Vous pouvez exécuter

git status -s

Cela montrera le nom des fichiers modifiés, puis en copiant le chemin du fichier intéressé, vous pouvez voir les changements en utilisant git diff

git diff <filepath + filename>
Tejas Pawar
la source
8

pour répertorier uniquement les détails des modifications de fichiers spécifiques,

git log --follow file_1.rb

pour répertorier la différence entre les différents validations d'un même fichier,

git log -p file_1.rb

pour lister uniquement commit et son message,

git log --follow --oneline file_1.rb
Mohideen bin Mohammed
la source
5

vous pouvez aussi essayer

git show <filename>

Pour les validations, git show affichera le message de log et la différence textuelle (entre votre fichier et la version validée du fichier).

Vous pouvez consulter la documentation de git show pour plus d'informations.

LuisBento
la source
0

Entièrement d'accord avec @Greg Hewgill

Et si votre chemin inclut des espaces, vous pouvez utiliser, essayez d'ajouter avec l'apostrophe ' ou `

git diff 'MyProject / My Folder / My Sub Folder / file_2.rb'

MrMins
la source