Ich habe ein Git-Repository, das eine Reihe von Unterverzeichnissen enthält. Jetzt habe ich festgestellt, dass eines der Unterverzeichnisse nicht mit den anderen zusammenhängt und in ein separates Repository abgetrennt werden sollte.
Wie kann ich das tun, während ich die Historie der Dateien innerhalb des Unterverzeichnisses beibehalte?
Ich könnte vermutlich einen Klon erstellen und die unerwünschten Teile jedes Klon entfernen, aber ich nehme an, dass dies mir den vollständigen Baum liefern würde, wenn ich eine ältere Revision herausnehme usw. Dies mag akzeptabel sein, aber ich möchte lieber so tun, als ob die beiden Repositories keine gemeinsame Historie haben.
Nur zur Klarstellung, ich habe folgende Struktur:
XYZ/
.git/
XY1/
ABC/
XY2/
Aber ich möchte stattdessen das hier:
XYZ/
.git/
XY1/
XY2/
ABC/
.git/
ABC/
10 Stimmen
Das ist jetzt trivial mit
git filter-branch
siehe meine Antwort unten.16 Stimmen
@jeremyjjbrown hat recht. Es ist zwar nicht mehr schwierig dies zu tun, aber es ist schwierig, die richtige Antwort auf Google zu finden, da die alten Antworten die Ergebnisse dominieren.
4 Stimmen
Die Verwendung von
git filter-branch
wird abgeraten. Siehe Warnung in der Dokumentation.3 Stimmen
Bitte verwenden Sie ein alternatives History-Filter-Tool wie git filter-repo.