Ich bin relativ neu in Git, ich habe Subversion schon einmal benutzt.
Mir ist aufgefallen, dass die meisten grafischen Git-Frontends und IDE-Plugins den Verlauf einer Datei nicht anzeigen können, wenn die Datei umbenannt wurde. Wenn ich benutze
git log --follow
In der Befehlszeile kann ich das gesamte Protokoll über Umbenennungen hinweg sehen.
Laut Linus Torvalds ist der --follow-Schalter ein "SVN noob" -Lustiger, ernsthafte Git-Benutzer verwenden ihn nicht:
--follow ist ein totaler Hack, der nur Ex-SVN-Benutzer zufriedenstellen soll, die sowieso nie etwas über Dinge wie Elternschaft oder nette Revisionsgraphen gewusst haben.
Es ist nicht ganz grundlegend, aber die aktuelle Implementierung von "--follow" ist wirklich eine schnelle Vorverarbeitung, die mit der Revisionslauflogik verknüpft ist, anstatt etwas wirklich Integrales zu sein.
Es wurde buchstäblich als "SVN Noob" -Lustiger entworfen, nicht als "echte Git-Funktionalität". Die Idee war, dass Sie sich von der (gebrochenen) Denkweise lösen würden, die Materie im großen Ganzen umbenennt.
Meine Frage : Wie erhalten die Hardcore-Git-Benutzer unter Ihnen den Verlauf einer Datei, als sie umbenannt wurde? Was ist der "echte" Weg, dies zu tun?
/bin/mv oldfile newfile) umbenennen , dies aber tun git add newfile; git rm oldfile, ist das Ergebnis nicht von dem von zu unterscheiden git mv oldfile newfile.
git log --followverbessert sich ein bisschen mit Git 2.9 (Juni 2016): siehe meine Antwort unten
--color-movedwenn Sie diff.
git mv oldfile newfileverursacht keine der Umbenennungs aufgezeichnet werden überhaupt - es ist genau das gleiche wie eine Datei zu löschen und eine andere hinzufügen. git arbeitet nur bei jedem Commit nachträglich Umbenennungen und Kopien aus dem Status des Baums aus.