Mein Repository wurde wie folgt geändert:
- ... einige nicht verwandte Commits ...
- Festschreiben einer neuen Datei
foo
mit 100 Inhaltszeilen - ... intervenierende Commits, von denen einige berühren
foo
... - Fügen Sie den Inhalt von
foo
oben in eine vorhandene Dateibar
undgit rm foo
in das gleiche Commit ein - ... mehr unabhängige Verpflichtungen ...
Jetzt möchte ich das Protokoll der gelöschten Datei sehen foo
. Alles, was ich gelesen habe, einschließlich SO, sagt, dass ich dazu in der Lage sein sollte git log -- foo
, aber dieser Befehl erzeugt keine Ausgabe.
Wenn ich das Commit finde, das das Löschen umfasst, foo
kann git log 1234abcd -- foo
ich das Protokoll sehen und denke, dass mein Weg zu foo
nicht das Problem ist. Beachten Sie auch, dass git merge-base HEAD 1234abcd
Ausgaben 1234abcd[...]
, so dass ich denke, dass beweisen sollte, dass das Commit von erreichbar ist HEAD
. Beachten Sie, dass sich foo
in meinem Arbeitsbaum keine Datei befindet (offensichtlich, da sie gelöscht wurde). Verwenden von Git 1.7.1.1 unter OS X.
Warum funktioniert das git log -- foo
bei mir nicht und wie kann ich es beheben? Vielen Dank!
git log --follow -- foo
odergit log --follow -M -- foo
? (um die Umbenennungserkennung zu erzwingen)--follow
beim Lesen habehistory
ich gesehen, dass ich seitdem woanders cd'ed hatte, als ich es versuchte, was den Pfad ungültig machte.git log --follow -- foo
hat funktioniert, als ich es vom richtigen Ausgangspunkt aus versucht habe. Ich denke , Git betrachtet rolltfoo
inbar
der Umbenennungs als eine Art? Auf jeden Fall danke! Ich werde dies gerne gutschreiben, wenn Sie es als Antwort erneut veröffentlichen.--
Fragentitel geändert wird—
...Antworten:
Sie möchten die
--follow
Option on verwendengit log
, die in der Manpage wie folgt beschrieben wird:Auf diese Weise können Sie nicht nur den Verlauf einer umbenannten Datei anzeigen, sondern auch den Verlauf einer Datei, die nicht mehr im Arbeitsbaum angezeigt wird. Der Befehl, den Sie verwenden sollten, sollte also ungefähr so aussehen:
Aktualisieren:
Git 2.9+ hat dies jetzt standardmäßig für alle
git diff
undgit log
Befehle aktiviert :Danke an x-yuri für das Heads Up!
quelle
--follow
Teil funktioniert . Ich musste nur hinzufügen--
. Ich rennegit-2.9.0
.