29 Stimmen

Wie erhalte ich in Git eine detaillierte Liste der Dateiänderungen von einer Revision zur anderen?

Ich verwende ein Git-Repository auf meinem Server, um die an den Server gesendeten Benutzerdateien zu versionieren. Ich bin daran interessiert, eine Liste der geänderten Dateien zwischen zwei Revisionen zu erhalten.

Ich weiß von git diff --name-only <rev1> <rev2> , aber ich erhalte nur eine Liste von Dateinamen. Ich bin vor allem auch an Umbenennungen und Kopien interessiert. Im Idealfall würde die Ausgabe in etwa so aussehen:

updated:  userData.txt
renamed:  picture.jpg -> background.jpg
copied:   song.mp3 -> song.mp3.bkp

Ist das möglich? --name-status scheint auch nicht auf Umbenennungen und Kopien hinzuweisen.

33voto

VonC Punkte 1117238
git diff --name-status -C <rev1> <rev2>

sollte dem, wonach Sie suchen, näher kommen.

--name-status werden die Dateinamen und ihr jeweiliger Status angezeigt:

(A|C|D|M|R|T|U|X|B)

Hinzugefügt (A), Kopiert (C), Gelöscht (D), Geändert (M), Umbenannt (R),
Typ (d. h. reguläre Datei, Symlink, Submodul, ) geändert (T),
Nicht zusammengeführt (U), Unbekannt (X) oder Paarung gebrochen (B)

(zu dem die OP Jean Philippe Pellet fügt hinzu:

Die Statusmeldungen R y C "sind immer von einer Punktzahl gefolgt, die den Prozentsatz der Ähnlichkeit zwischen der Quelle und dem Ziel der Verschiebung oder Kopie angibt, und sind die einzigen, die so sind". )

Bezüglich kopierter oder verschobener Dateien:

-C[<n>]
--find-copies[=<n>]

Erkennen Sie sowohl Kopien als auch Umbenennungen. Wenn n angegeben ist, hat es die gleiche Bedeutung wie bei -M<n> .

--find-copies-harder

Aus Leistungsgründen ist dies die Standardeinstellung, -C findet Kopien nur, wenn die Originaldatei der Kopie im selben Changeset geändert wurde.
Mit diesem Flag wird der Befehl veranlasst, unveränderte Dateien als Kandidaten für die Quelle der Kopie zu untersuchen.
Dies ist ein sehr kostspieliges Verfahren für große Projekte, daher ist es mit Vorsicht zu genießen. Die Vergabe von mehr als einem -C hat die gleiche Wirkung.


brauliobo empfiehlt in den Kommentaren :

git diff --stat -C
git show --stat -C
git log --stat -C

3voto

sehe Punkte 346808

Ich glaube, `` wird diese Information anzeigen

git diff -M -C --stat

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X