
Nehmen wir an, ich habe eine Datei filename
in einem Git-Repository im Unterverzeichnis dir1
mit einem Verlauf wie diesem:
v7 --- v8 --- v9 --- v10
Die Datei ist Teil eines größeren Repositorys mit verschiedenen Unterverzeichnissen, aber nur die oben genannten Änderungssätze betreffen diese Datei. Jetzt habe ich ( filename
auch) eine alte Version dieser Datei ausgegraben, die versehentlich in ein anderes Unterverzeichnis übertragen wurde dir2
. Diese ältere Version „existiert“ nur in einem Änderungssatz, sagen wir:
v4
Das Problem besteht nun darin, ob ich den Verlauf dieser beiden Dateien (in Git) umschreiben kann, sodass es so aussieht, als ob sie filename
nur in existiert hätten dir1
. Das Ergebnis wäre dann etwa dieser Verlauf:
v4 --- v7 --- v8 --- v9 --- v10
Ich könnte wohl versuchen, die Datei in zu entfernen dir2
und sie als neue Version der Datei in zu bestätigen dir1
, aber dadurch wird der tatsächliche Verlauf der Datei durcheinandergebracht, sodass die tatsächlich älteste Version der Datei als die neueste angezeigt wird.
Ich habe sehr wenig Erfahrung mit dem „Optimieren“ des Verlaufs von Git-Repositorys und weiß daher nicht, wie das geht, aber ich vermute, dass Rebase die Lösung sein könnte. Ich bin der Einzige, der am Repository arbeitet, daher besteht meine einzige Sorge darin, diese Änderungen auf beiden Computern zu synchronisieren.
Ich schätze, ich möchte die Datei eigentlich einfach dort belassen, dir2
wo sie ursprünglich im Verlauf war, aber ich möchte das oben aufgerufene Commit ändern, v4
um aus der Datei eine Version der Datei in zu machen dir1
.