Ich habe ein Repository und möchte eines seiner Verzeichnisse in ein neues Repo trennen. Dies ist ein perfekter Ort, um loszulegen, es gibt jedoch einen Vorbehalt: Das Verzeichnis, das ich trennen möchte, wurde irgendwann umbenannt. Und wenn ich die Lösung von diesem Post mit dem neuen Namen des Verzeichnisses befolge, dann scheint es, als würde ich den Verlauf vor dem Umbenennen verlieren. Irgendwelche Ideen einer Optimierung, damit es in dieser Situation funktioniert?
git filter-branch
kann in Bereichen von Commits arbeiten; Was wir also tun können, ist, das "Vorher" und das "Nachher" getrennt zu filtern und sie mit Pfropfungen zu verbinden:
Dies ist geringfügig komplexer, wenn Sie mehrere Zweige oder Tags filtern müssen. Verzweigungen vor der Umbenennung können in die erste Filterverzweigung aufgenommen werden, während nachfolgende in der zweiten Filterverzweigung vor ^rename
eingefügt werden müssen.
Eine andere Option wäre, stattdessen einen Indexfilter (oder Baumfilter) hinzuzufügen, der nach den beiden alten und neuen Verzeichnissen sucht und behält, was auch immer vorhanden ist.
Da Sie kein Test-Repository zur Verfügung gestellt haben, finden Sie hier ein schnelles Skript zur Überprüfung der Benutzerfreundlichkeit für dieses Szenario:
%Vor%Wenn dieses Verfahren für Sie nicht funktioniert, dann ist wahrscheinlich etwas anderes an Ihrem Repository-Verlauf seltsam, das Sie nicht beschrieben haben, z. B. ein anderes Umbenennen, das im Verlauf verborgen ist.
Wir (Matthew Flatt und ich) haben ein Programm geschrieben, um dies zu tun: Ссылка
Tags und Links git git-filter-branch