Man nehme die Git Repositories A und B:
A
|_.git
|_file01.txt
|_file02.txt
|_file03.txt
B
|_.git
|_Zeugs
|_image01.txt
|_image02.txt
|_image03.txt
Im Verzeichnisbaum sieht das ganze dabei so aus:
*
|_A
|_B
Nun soll der Inhalt des Repositories B im Repository A landen. Wichtig hierbei ist das die History erhalten bleiben soll. Dazu legen wir in Repository A einen Branch an und laden das Repository B in diesen. Im Repository A öffnen wir eine Konsole und geben dort folgendes ein:
git remote add other ../B git fetch other git checkout -b tmpBranch other/master git checkout master git merge tmpBranch git branch -d tmpBranch git remote rm other git push
Sollte es nach dem „merge tmpBranch“ zu Konflikten kommen, so müssen diese gelöst werden und das ganze dann mittels „git commit“ bzw. „git commit -a“ fixiert werden. Danach sieht das Repository dann so aus:
A
|_.git
|_Zeugs
|_file01.txt
|_file02.txt
|_file03.txt
|_image01.txt
|_image02.txt
|_image03.txt
Für Git Neulinge das ganze nochmal ein wenig genauer. Mittels „git remote add other ../B“ wird dem Repository A ein neuer Remote hinzugefügt. Die Daten aus diesem werden dann mittels „git fetch other“ geladen und anschließend werden diese „git checkout -b tmpBranch other/master“ in einen neuen Branch namens „tmpBranch“ gepackt.
Nun machen wir mit „git checkout master“ den Masterbranch wieder zum aktiven Branch und mergen den „tmpBranch“ mittels „git merge tmpBranch“ in den Masterbranch. Danach wird der „tmpBranch“ mittels „git branch -d tmpBranch“ gelöscht und der nicht mehr benötige Remote mittels „git remote rm other“ entfernt.
Nun wird das ganze noch mit „git push“ auf den Remote des Repositories gepusht und fertig ist die Überführung.
Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Git
http://progit.org/book/de/ch3-4.html
http://de.gitready.com/beginner/2009/01/25/branching-and-merging.html
http://stackoverflow.com/questions/1683531/how-to-import-existing-git-repository-into-another
Nun soll der Inhalt des Repositories A im Repository B landen.
Du beschreibst es aber andersrum, was etwas verwirrend ist.
Danke für den Hinweis. Habe es mal korrigiert.
Ich würde den Satz mit dem furchtbaren Wort „pullen“ ändern oder zumindest weiter unten erklären, dass damit die zwei Schritte „fetch + checkout“ gemeint sind.
Unsägliches Wort entfernt ;)
Why the „tmpBranch“? This should have been enough to merge B into A:
git remote add other -f ../B
git merge other/master