Wenn ich eine Datei in git mit git-mv verschiebe, zeigt der Status an, dass die Datei umbenannt wurde, und selbst wenn ich einige Teile ändere, wird sie immer noch als fast dasselbe angesehen (was gut ist, weil ich damit den Verlauf verfolgen kann). .
Wenn ich eine Datei kopiere, hat die Originaldatei einen Verlauf, den ich der neuen Kopie zuordnen möchte.
Ich habe versucht, die Datei zu verschieben und dann erneut am ursprünglichen Speicherort auszuchecken. Sobald git verschoben wurde, kann ich den ursprünglichen Speicherort nicht mehr auschecken.
Ich habe versucht, eine Dateisystemkopie zu erstellen und dann die Datei hinzuzufügen - git listet sie als neue Datei auf.
Gibt es eine Möglichkeit, Git Record zu einem Dateikopiervorgang zu machen, ähnlich wie es ein Umbenennen / Verschieben von Dateien aufzeichnet, bei dem der Verlauf auf die Originaldatei zurückgeführt werden kann?
diff.renames
zu aktivieren, stellen Siecopies
(zgit config diff.renames copies
. B. ' ') ein. Ich bin damit einverstanden, dass es ein bisschen eingängig ist.git log -L123,456:file.xyz
), das Umbenennungen ordnungsgemäß folgt, jedoch keine Kopien, und Sie können --follow in diesem Fall nicht übergeben. AFAICT funktioniert auch nicht mit Git-Schuld.2020-05-19: Die folgende Lösung bietet den Vorteil, dass das Protokoll der Originaldatei nicht geändert, kein Zusammenführungskonflikt erstellt und kürzer wird.
Sie können Git zwingen, den Verlauf der kopierten Datei in drei Commits zu erkennen:
--no-ff
.(Credits gehen an Raymond Chen .)
Die frühere Lösung hatte vier Commits:
(Lösung von https://stackoverflow.com/a/44036771/1389680 .)
quelle
move
undrename
?mv
für beide Operationen verwenden würden? Ich habe 'move' für den Fall verwendet, bei dem möglicherweise das Verzeichnis der Datei geändert wird, und 'umbenennen' für den Fall, dass dies nicht der Fall ist.