Zeigen Sie Änderungen an einer bestimmten Datei mit git an

472

Ich weiß, dass ich den git diffBefehl verwenden kann, um die Änderungen zu überprüfen, aber soweit ich verstanden habe, ist er verzeichnisbasiert. Dies bedeutet, dass alle Änderungen aller Dateien im aktuellen Verzeichnis angezeigt werden.

Wie kann ich nur die Änderungen in einer bestimmten Datei überprüfen? Sprich, ich habe geänderte Dateien file_1.rb, file_2.rb..., file_N.rbaber ich bin nur in den Änderungen in der Datei interessiert file_2.rb. Wie überprüfe ich diese Änderungen dann (bevor ich sie festschreibe)?

Mellon
quelle
1
Mögliches Duplikat von Wie wird der Dateiversionsverlauf in Git angezeigt?
CharlesB
4
Meine Hauptfrage ist, wie ich den Unterschied für eine bestimmte Datei überprüfen kann, bevor ich alle Änderungen festschreibe. Git-Protokoll ist für festgeschriebene Änderungen, denke ich.
Mellon
1
Nach meiner Erfahrung ist es besser, ein visuelles Tool wie GitKraken
Giovanni Benussi am

Antworten:

642

Verwenden Sie einen Befehl wie:

git diff file_2.rb

In der git diffDokumentation finden Sie ausführliche Informationen zu den Dingen, für die Sie Unterschiede erhalten können.

Normalerweise git diffwerden alle Änderungen im gesamten Repository (nicht nur im aktuellen Verzeichnis) angezeigt.

Greg Hewgill
quelle
100
Wenn Sie die Änderungen einer Datei sehen möchten, die Sie bereits "git add" hinzugefügt haben, ist es "git diff --cached"
Ana Betts
8
Wenn Sie eine Datei mit einem älteren Commit vergleichen möchten: $ git diff [Commit-Hash] file_2.rb
Alex Angelico
2
Wie verlasse ich die Diff-Ansicht?
Garry
1
Oder verwenden Sie SourceTree.
GeneCode
4
@ GurpreetsinghDhanju Versuchen Sie, Q
110

Eine andere Methode (in dieser SO-Antwort erwähnt ) speichert den Verlauf im Terminal und gibt Ihnen einen sehr tiefen Überblick über die Datei selbst:

git log --follow -p -- file

Dies zeigt den gesamten Verlauf der Datei an (einschließlich des Verlaufs über das Umbenennen hinaus und mit Unterschieden für jede Änderung).

Mit anderen Worten, wenn die Datei mit dem Namen bar einmal foo genannt wurde, zeigt git log -p bar (ohne die Option --follow) nur den Verlauf der Datei bis zu dem Punkt an, an dem sie umbenannt wurde Datei Geschichte, als es als foo bekannt war. Wenn Sie git log --follow -p bar verwenden, wird der gesamte Verlauf der Datei angezeigt, einschließlich aller Änderungen an der Datei, als sie als foo bezeichnet wurde.

AJ Zane
quelle
3
Funktioniert gut mit --stat, um einen Überblick über die hinzugefügten / gelöschten Zeilen zu erhalten.
Tom Hale
2
Ja, diese Antwort sollte mindestens einen höheren Rang haben, den Verlauf verfolgen, nicht nur den aktuellen Unterschied, noch müssen Sie alle Commit-Hashes verfolgen. Ziemlich einfache Verwendung, aber sehr mächtig in Änderungen
Ilhicas
87

Sie können verwenden gitk [filename], um das Änderungsprotokoll anzuzeigen

da Rocha Pires
quelle
2
Dies zeigt den Verlauf der Commits in der Datei an, was manchmal das ist, was Sie benötigen.
r1k0
26

Mit dem folgenden Befehl können Sie sehen, wer was in einer Datei geändert hat.

git blame <filename>

Vineet
quelle
4
Dies ist die beste Antwort, da sie Ihnen sagt, wer welche Änderung vorgenommen hat und wann und zu welchem ​​Commit die Änderung gehört hat. Um Filter für eine bestimmte Änderung, nur tun , git blame <filename> | grep <searchfor>wo <searchfor>ein kurzer Wert ist. Um beispielsweise herauszufinden, wer foozu barin gewechselt hat dist/index.php, würden Siegit blame dist/index.php | grep bar
Kraang Prime
15

Sie können ausführen

git status -s

Daraufhin wird der geänderte Dateiname angezeigt. Durch Kopieren des gewünschten Dateipfads können Sie Änderungen mit anzeigen git diff

git diff <filepath + filename>
Tejas Pawar
quelle
8

um nur Commits-Details für bestimmte Dateiänderungen aufzulisten,

git log --follow file_1.rb

um Unterschiede zwischen verschiedenen Commits für dieselbe Datei aufzulisten,

git log -p file_1.rb

nur Commit und seine Nachricht aufzulisten,

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

Sie können es auch versuchen

git show <filename>

Bei Commits zeigt git show die Protokollnachricht und den Textunterschied (zwischen Ihrer Datei und der festgeschriebenen Version der Datei) an.

Weitere Informationen finden Sie unter git show Documentation .

LuisBento
quelle
0

Stimme @Greg Hewgill voll und ganz zu

Wenn Ihr Pfad Leerzeichen enthält, können Sie versuchen, ihn mit Apostroph 'oder ` hinzuzufügen

git diff 'MeinProjekt / Mein Ordner / Mein Unterordner / file_2.rb'

MrMins
quelle