Heute ist es wieder einmal Zeit für einen Braindump. Ich hatte in einem Projekt das Problem, dass der Branch aus einem Repository in ein fremdes Repository übernommen werden sollte. Da so etwas zwar nicht sehr oft aber dennoch vorkommen kann, hier nun eine kleine Erklärung.
Nehmen wir an, es gibt ein Repository im Verzeichnis A
mit allen Branches und ein Verzeichnis B
mit dem neuen Repository. Zuerst sollte man schauen, dass beide Repositories auf dem aktuellen Stand sind. Dann wechselt man ins Verzeichnis B
und legt dort einen neuen Branch (hier: dump
) an, den man später benutzt, um die Commits zu sammeln.
cd B git checkout -b dump
Nun verbindet man die beiden Repositories, wobei man das Repository in Verzeichnis A
als remote
von Verzeichnis B
angibt. Anschließend kann man per fetch
alle Informationen rein laden und per merge den betreffenden Branch in den dump Branch übernehmen. Alternativ geht natürlich auch ein cherry-pick
.
git remote add other ../B git fetch other git merge other/mybranch
Jetzt kann man die Verbindung zum remote
-Branch lösen und schon ist man fertig.
git remote rm other
Mit dem dump
-Branch kann man dann genauso arbeiten, wie man es von einem normalen Branch gewohnt ist. In meinem Fall habe ich dann die Commits in einen dev
-Branch gemerged und darauf aufbauend weiter gearbeitet.