2017-01-22 1 views
-1

Ich habe eine Reihe von Dateien in einem bestimmten Verzeichnis in meinem Git Repo. Ich habe sie alle unterschiedlich verändert, hinzugefügt und dann die Dateien in ein neues Unterverzeichnis über git mv verschoben. Nun, wenn ich git status sehe ich das:Datei verschoben mit git mv zeigt sich als gelöscht/hinzugefügt

renamed: path/file1.ext -> path/to/file1.ext 
new file: path/to/file2.ext 
deleted: path/file2.ext 

file2.ext hatte viel mehr in wesentlichen Punkten geändert, um es als file1.ext hat aber immer noch ... warum nicht file2.ext zeigt sich als umbenannt werden?

Es scheint fast so, als hätte git eine Änderungsschwelle. Wenn die Änderungen an einer Datei einen bestimmten Prozentsatz überschreiten, zählen Sie sie nicht als umbenannte Datei, sondern als alte Datei, die gelöscht wird und eine neue Datei erstellt wird.

Antwort

2

Das ist richtig. Git verfolgt keine Umbenennungen. Stattdessen wird untersucht, wie sich Dateiinhalte ändern und von einem Ort zum anderen wechseln. Wenn eine Datei verschwindet und genügend Inhalt unter einem neuen Namen angezeigt wird, zeigt git sie als Umbenennung an. (Dies wird im laufenden Betrieb erfolgen, wenn man sich die Geschichte begehen sehen.)

Von git diff --help:

-M[<n>]
--find-renames[=<n>]

Umbenennungen erkennen. Wenn n angegeben ist, handelt es sich um einen Schwellenwert für den Ähnlichkeitsindex (d. H. Um die Menge an Hinzufügungen/Löschungen im Vergleich zur Dateigröße). Beispiel: -M90% bedeutet, Git sollte ein Lösch/Hinzufügen-Paar als Umbenennung betrachten, wenn mehr als 90% der Datei nicht geändert wurden. Ohne ein % Zeichen ist die Zahl als Bruch zu lesen, mit einem Dezimalpunkt davor. Das heißt, -M5 wird 0,5 und ist somit dasselbe wie -M50%. Ähnlich ist -M05 das gleiche wie -M5%. Um die Erkennung auf exakte Umbenennungen zu beschränken, verwenden Sie . Der Standardähnlichkeitsindex beträgt 50%.