Ich versuche, einige Dateien zwischen zwei Git-Repositories repo1
und repo2
zu verschieben. Ich habe eine kurze Liste von Dateien, die ich verschieben möchte (Historie beibehalten).Verlauf für alles außer einer Liste von Dateien mit Git Filter-Zweig entfernen
libraryname/file1
libraryname/file2
tests/libraryname/file3
Es gibt auch andere Dateien in libraryname/
und tests/libraryname/
:
Drei Dateien von repo1
zu bewegen. Es gibt auch andere Ordner in /
und tests/
Mein Plan ist repo1
zur Kasse, dann ändern Sie die Geschichte Baum, bis es nur die Geschichte für die Dateien enthält Ich habe Interesse an. Dann Kasse repo2
und verschmelzen in der Ausgabe der vorherigen Betrieb. Es scheint wie git filter-branch
ist das richtige Werkzeug für den ersten Schritt.
Bisher habe ich versucht git filter-branch --index-filter 'git rm -r --cached <FILES>'
Wo <FILES>
listet alle unerwünschte ganze Ordner oder Datei.
Aber das hinterlässt eine Menge von Ordnern, die nicht mehr bei HEAD
existieren, aber irgendwann in dieser Repository-Lebensdauer existiert haben. Es scheint ziemlich mühsam, alles herauszufinden, was in der Geschichte dieses Repos existiert hat - es muss einen besseren Weg geben
Wie bekomme ich am Ende einen git commit tree, der nur diese drei Dateien enthält? Gibt es einen besseren Weg als ich vorschlage? Oder gibt es eine Möglichkeit, Spuren aller Dateien zu entfernen, die derzeit nicht unter HEAD
existieren?