2012-03-24 4 views
136

Grundsätzlich möchte ich nicht den geänderten Inhalt sehen, nur die Dateinamen und Zeilennummern.Kann ich git diff nur die geänderten Dateinamen und Zeilennummern anzeigen lassen?

+0

Ich bin neugierig, sind Zeilennummern wirklich ohne Code nützlich? Oder möchten Sie, dass die Anzahl der Zeilen geändert wird? –

+0

gut, nicht besonders, aber ich brauche es zu Lesezeichen, wo ich meinen Code geändert habe. – wei

+0

Eine Verwendung von dies wäre, die Informationen mit einem Code-Coverage-Bericht zu kombinieren, um zu beurteilen, ob der neue oder geänderte Code in einem Commit durch Tests abgedeckt ist – AntonyG

Antwort

40

Hinweis: Wenn Sie gerade auf der Suche nach den Namen der geänderten Dateien (ohne die Zeilennummern für Zeilen, die geändert wurden) sind, that's easy, click this link to another answer here.


Es gibt keine eingebaute Option für diese (und ich glaube nicht, es ist, dass alle nützlich entweder), aber es ist möglich, dies in git zu tun, mit Hilfe eines „externen diff“ Skript.

Hier ist eine ziemlich beschissene; es liegt an Ihnen, die Ausgabe so zu regeln, wie Sie es möchten.

#! /bin/sh 
# 
# run this with: 
# GIT_EXTERNAL_DIFF=<name of script> git diff ... 
# 
case $# in 
1) "unmerged file [email protected], can't show you line numbers"; exit 1;; 
7) ;; 
*) echo "I don't know what to do, help!"; exit 1;; 
esac 

path=$1 
old_file=$2 
old_hex=$3 
old_mode=$4 
new_file=$5 
new_hex=$6 
new_mode=$7 

printf '%s: ' $path 
diff $old_file $new_file | grep -v '^[<>-]' 

Einzelheiten zu „externen diff“ finden Sie in der Beschreibung von GIT_EXTERNAL_DIFF in der git manual page (um die Linie 700, ziemlich nahe am Ende).

+1

Danke.Ich habe tatsächlich ein ähnliches Skript geschrieben, nachdem bestätigt wurde, dass es keine eingebauten Optionen dafür gibt, :) – wei

+0

Piping zu '| grep -o '^ [0-9] *' 'gibt dir nur Zahlen, vorausgesetzt, du interessierst dich nicht für die rechte Seite. – GKFX

43

Zeilennummern als Anzahl der geänderten Zeilen oder die tatsächlichen Zeilennummern, die die Änderungen enthalten? Wenn Sie die Anzahl der geänderten Zeilen wünschen, verwenden Sie git diff --stat. Dies gibt Ihnen eine Anzeige wie folgt:

Es gibt keine Option, die Zeilennummern der Änderungen selbst zu erhalten.

+1

Ich dachte an die tatsächlichen Zeilennummern. Trotzdem danke. – wei

+0

'gitk [Dateiname]' – uday

+0

Ich bezweifle irgendwie, er will ein GUI-Tool dafür. – ThiefMaster

464

So einfach

git diff --name-only 

Gehe hin und diff!

+1

So einfach und so gut. – Wok

+38

Dies ist die Antwort, die meisten Leute suchen, wenn sie diese Seite anzeigen (es war für mich). Es beantwortet jedoch nicht die ursprüngliche Frage, die Zeilennummern ausdrücklich erwähnt. –

+7

Dies sollte NICHT die akzeptierte Antwort sein, da es nur die Hälfte des Problems löst - Sie müssen immer noch die Zeilen (für jede Datei) ausgeben, die geändert wurden. – adamwong246

1

Ich weiß, dass dies eine alte Frage, aber auf Windows, diese filtert die git Ausgabe auf die Dateien und geänderte Zeilennummern:

(git diff -p --stat) | findstr "@@ --git"

diff --git a/dir1/dir2/file.cpp b/dir1/dir2/file.cpp 
@@ -47,6 +47,7 @@ <some function name> 
@@ -97,7 +98,7 @@ <another functon name> 

Um die Dateien zu extrahieren und die geänderten Zeilen aus, dass ein bisschen mehr Arbeit ist:

for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f

a/dir1/dir2/file.cpp 
47,7 
98,7