it-swarm.com.de

Wie liste ich alle Commits auf, die eine bestimmte Datei geändert haben?

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

711
Daniel

Der _--follow_ funktioniert für eine bestimmte Datei

_git log --follow -- filename
_

nterschied zu anderen Lösungen angegeben

Beachten Sie, dass andere Lösungen _git log path_ (ohne den _--follow_) enthalten. Dieser Ansatz ist praktisch, wenn Sie z. Änderungen in einem Verzeichnis, aber stolpert beim Umbenennen von Dateien (verwenden Sie also --follow filename).

967
jackrabb1t

git log path sollte tun, was Sie wollen. Vom git log Mann :

[--] <path>…

Show only commits that affect any of the specified paths. To prevent confusion with 
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
121
Gabe Moothart

Ich habe mir das genau angesehen und all diese Antworten scheinen mir nicht wirklich alle Verpflichtungen in allen Branchen aufzuzeigen.

Folgendes habe ich mir ausgedacht, als ich mit den Optionen für die Gitk-Bearbeitungsansicht rumgespielt habe. Dies zeigt mir alle Commits für eine Datei unabhängig von Branch, Local, Reflog und Remote.

gitk --all --first-parent --remotes --reflog --author-date-order -- filename
48
BigMiner

Verwenden Sie den folgenden Befehl, um Commits für eine bestimmte Datei abzurufen:

git log -p filename
41
Sankar Subburaj

Es sollte so einfach sein wie git log <somepath>; Überprüfen Sie die Manpage (git-log(1)).

Persönlich verwende ich gerne git log --stat <path>, damit ich die Auswirkungen der einzelnen Festschreibungen auf die Datei sehen kann.

35
rfunduk

Wie Jackrabb1t betonte, ist --follow robuster, da es den Verlauf über Umbenennungen/Verschiebungen hinaus auflistet. Wenn Sie also nach einer Datei suchen, die sich nicht im selben Pfad befindet, oder nach einer Datei, die in verschiedenen Commits umbenannt wurde, wird --follow sie nachverfolgen.

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

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

Aber wenn Sie eine kompaktere Liste nur mit dem, was zählt, wollen:

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

oder auch

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

Der Nachteil ist, dass --follow nur für eine einzelne Datei funktioniert.

15
Roberto

Alternativ (seit Git 1.8.4) ist es auch möglich, alle Commits abzurufen, die einen bestimmten Teil einer Datei geändert haben. Sie erhalten dies, indem Sie die Start- und die Endzeilennummer übergeben.

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

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

wobei upperLimit der start_line_number und lowerLimit der ending_line_number ist

Weitere Informationen - https://www.techpurohit.com/list-some-useful-git-commands

14
jitendrapurohit

Wenn Sie versuchen, - einer gelöschten Datei zu folgen in einem vorherigen Commit zu verwenden

git log --follow -- filename
10
snovelli

Wenn Sie alle Commits anzeigen möchten, die eine Datei in allen Zweigen geändert haben, verwenden Sie Folgendes:

git log --follow --all <filepath>
8
Always_Beginner

Wenn Sie alle Commits mit filename und nicht mitfilepath suchen möchten, verwenden Sie:

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

Verwenden Sie git log --all <filename>, um die Commits anzuzeigen, die <filename> in allen Zweigen beeinflussen.

5
Lebnik

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

git log -p --full-diff [branch] -- <path>
5
Cubic
gitk <path_to_filename>

Angenommen, das Paket "gitk" ist bereits installiert.

Wenn es nicht installiert ist, gehen Sie folgendermaßen vor:

Sudo apt-get install gitk

Versuchen Sie dann den obigen Befehl. Es ist für Linux ... Es könnte Linux-Benutzern helfen, wenn sie eine GUI wollen.

3
Breen ho

Unter Linux können Sie hierfür gitk verwenden.

Es kann mit "Sudo apt-get install git-gui gitk" installiert werden. Es kann verwendet werden, um Commits einer bestimmten Datei von "gitk <Dateiname>" zu sehen.

# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>

# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>

Referenz

1
AnshBikram