2013-10-31 5 views
11

Was ist der einfachste Weg, die commit zu finden, wenn eine bestimmte Datei wurde hinzugefügt, um die Repo? Ich vermute, dass es keine eingebauten Git-Funktionen dafür gibt, oder?Git - Commit finden, wenn die Datei erstellt wurde

+1

Mögliche Duplikat [Finden Sie begehen, wo Datei hinzugefügt wurde] (http://stackoverflow.com/questions/11533199/find-commit-where-file-was-added) –

Antwort

14

Es ist ganz einfach. Der folgende Befehl zeigt das erste Commit an, dass die Datei zum Repo hinzugefügt wurde.

git log --oneline filename | tail -1 
1

Wahrscheinlich die einfachste Sache ist etwas einfach:

git log FILE | grep commit | tail -1 | awk '{ print $NF }' 
3

können Sie sagen:

git log -1 --reverse --pretty=oneline filename 

Diese Sie das Commit erste geben sollte.

Von git help:

-<n> 
     Limits the number of commits to show. Note that this is a commit 
     limiting option, see below. 

    --reverse 
     Output the commits in reverse order. Cannot be combined with 
     --walk-reflogs. 

Für die Commit-Nachricht zu beseitigen, sagen:

git log -1 --format="%H" --reverse filename 
+1

Während dies wahrscheinlich die beste können Sie Für den "normalen" Fall (Datei hinzugefügt und dann mehrfach modifiziert) bin ich mir nicht sicher, ob es eine gute Lösung gibt, wenn die Datei z hinzugefügt, geändert, entfernt, dann zu einem späteren Zeitpunkt wieder eingeführt, oder wenn die Datei aufgrund einer Folge von Umbenennungen usw. entstanden ist ... – twalberg

1

Wenn Sie wirklich finden wollen das Commit, dass eine Datei eingeführt Sie Umbenennungs berücksichtigen müssen. So verwenden

git log --follow --diff-filter=A -- <filepath> 

--diff-filter = [(A | C | D | M | R | T | U | X | B) ... [*]]
nur Dateien auswählen werden hinzugefügt (A), kopiert (C), Deleted (D), Modified (M), umbenannt (R) ...

--follow
weiter die Geschichte einer Datei über Umbenennungen Listing (funktioniert nur für eine einzelne Datei).

Schließlich müssen Sie auch die --find-renames Schwelle anpassen.

--find-Umbenennungen [=]
Wenn diffs zu erzeugen, erkennen und Bericht für jede umbenennt begehen. Weitere Informationen zu den folgenden Dateien beim Umbenennen des Verlaufs finden Sie unter --follow. Wenn n angegeben ist, ist dies ein Schwellenwert für den Ähnlichkeitsindex (d. H. Menge an Hinzufügungen/Löschungen verglichen mit der Dateigröße). Beispiel: -M90% bedeutet, dass Git ein Lösch-/Hinzufügen-Paar als Umbenennung betrachten sollte, wenn mehr als 90% der Datei nicht geändert wurden. Ohne ein% -Zeichen soll die Zahl als Bruch gelesen werden, mit einem Dezimalpunkt davor. D.h., -M5 wird 0,5 und ist somit dasselbe wie -M50%. Ähnlich ist -M05 gleich wie -M5%. Um die Erkennung auf exakte Umbenennungen zu beschränken, verwenden Sie -M100%. Der Standardähnlichkeitsindex beträgt 50%.

Verwandte Themen