1121 Stimmen

Wie kann man alle Commits auflisten, die eine bestimmte Datei geändert haben?

Gibt es eine Möglichkeit, alle Commits aufzulisten, die eine bestimmte Datei geändert haben?

3 Stimmen

Suchen Sie nach Änderungen an einer Datei in einer einzelnen Verzweigung, in allen lokalen Verzweigungen, in allen Verzweigungen auf einer einzigen entfernten Verzweigung oder in allen? Ich denke, für alle ist ein Skript erforderlich.

26voto

jitendrapurohit Punkte 8899

Alternativ (seit Git 1.8.4) ist es auch möglich, einfach alle Commits zu erhalten, die eine bestimmte Teil einer Datei. Sie erhalten sie, indem Sie die Start- und Endzeilennummer angeben.

Das zurückgegebene Ergebnis wäre die Liste der Übertragungen, die diesen bestimmten Teil geändert haben. Der Befehl geht wie folgt:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

wobei upperLimit es el start_line_number y lowerLimit es el ending_line_number

Mehr Infos - https://www.techpurohit.in/list-some-useful-git-commands

0 Stimmen

Der Link ist defekt: HTTP : "techpurohit.com ist abgelaufen und wird frei geparkt" . HTTPS : "Bei der Verbindung zu www.techpurohit.com ist ein Fehler aufgetreten. PR_END_OF_FILE_ERROR"

19voto

Roberto Punkte 10951

Als jackrabb1t wies darauf hin , --follow ist robuster, da es die Auflistung der Historie über Umbenennungen/Verschiebungen hinaus fortsetzt. Wenn Sie also nach einer Datei suchen, die sich derzeit nicht im selben Pfad befindet, oder nach einer Datei, die über mehrere Übertragungen hinweg umbenannt wurde, --follow wird es verfolgen.

Dies kann eine bessere Option sein, wenn Sie die Namens-/Pfadänderungen visualisieren möchten:

git log --follow --name-status -- <path>

Wenn Sie jedoch eine kompaktere Liste wünschen, die nur das Wesentliche enthält:

git log --follow --name-status --format='%H' -- <path>

oder sogar

git log --follow --name-only --format='%H' -- <path>

Der Nachteil ist, dass --follow funktioniert nur bei einer einzigen Datei.

4 Stimmen

--follow arbeitet für einen einzigen Pfad das ein Verzeichnis sein könnte. Wenn ein Verzeichnis übergeben wird, wird es rekursiv ausgeführt und meldet Änderungen an allen Dateien unterhalb dieses Punktes.

18voto

Eng_Farghly Punkte 924

Um alle Übertragungen für eine bestimmte Datei zu erhalten, verwenden Sie:

git rev-list HEAD --oneline FileName

Zum Beispiel

git rev-list HEAD --oneline index.html

出力

7a2bb2f update_index_with_alias
6c03e56 update_changes
e867142 Revert "add_paragraph"

Siehe Gif-Bild git commits for specific files

14voto

WonderLand Punkte 5225

Wenn Sie nach allen Übertragungen suchen wollen, die von filename y nicht von filepath verwenden:

git log --all -- '*.wmv'

14voto

Cubic Punkte 14087

Wenn Sie alle Änderungen in Commits sehen möchten, die eine bestimmte Datei verändert haben (und nicht nur die Änderungen an der Datei selbst), können Sie --full-diff :

git log -p --full-diff [branch] -- <path>

0 Stimmen

Oder ohne die [branch]

2 Stimmen

@Anentropic Die eckigen Klammern sollten anzeigen, dass das Argument optional ist.

0 Stimmen

Das ist alles, was ich brauche. Es zeigt alle Änderungen an, einschließlich einiger Änderungen durch die Zusammenführung.

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