2013-07-24 8 views
8

Ich versuche, eine gitsubtree eines vorhandenen Repository zu erstellen, zum Beispiel:Wie kann ich einen gitsubtree eines vorhandenen Repository erstellen?

-> projectA/ProjectB

Projekt A ist die Mutter, ich will Projekt B als git Teilbaum hinzuzufügen.

git subtree -P ProjectB ssh: //[email protected]/projectB.git Master

Aber es schlägt fehl, und zeigt die folgende Meldung:

Präfix ‚ProjectB ' ist bereits vorhanden.

Ich möchte nicht das gesamte Repository erneut herunterladen, ich möchte nur dieses Verzeichnis zu meinem gitsubtree hinzufügen.

Dieses Verzeichnisprojekt B wird nicht von Project A git überwacht.

Dank im Voraus

+1

Ist der ProjektB-Ordner bereits vorhanden? Wenn ja, enthält es etwas? Der Git-Unterbaum wird es ablehnen, den Unterbaum zu erstellen, wenn das Verzeichnis, in das er eingefügt werden würde, überhaupt etwas enthält. – LopSae

+0

Scheint derzeit unmöglich (git v2.0), wenn ProjektB-Ordner bereits vorhanden ist, und entfernen Sie das vorhandene ProjektB-Verzeichnis mit 'rm -rf-ProjektB' dann tun 'git Unterverzeichnis hinzufügen ProjektB_Verzeichnis [email protected]/projectB.Git-Master zum erneuten Download ist die einzige Wahl. – Allen

Antwort

4

Sie ProjectB als Teilstruktur von projectA git (Sie brauchen nicht git subtree) mit Vanille hinzufügen.

cd projectA 
git remote add projectB_remote [email protected]/projectB.git 
git fetch projectB_remote 
git checkout -b projectB_branch projectB_remote/master 
git checkout master 
git read-tree --prefix=projectB/ -u projectB 

Erklärung

  1. Geben Sie die lokale projectA Repo.
  2. Fügen Sie eine neue Fernbedienung namens projectB_remote mit ProjectBs URL hinzu.
  3. Abruf projectB_remote ohne Zusammenführung.
  4. Erstellen und Auschecken einer projectB_branch; bringen Sie die projectB_remote/master Dateien ein.
  5. Zurück zu projectA/master.
  6. Erstellen Sie einen Teilbaum in projectA/master, die eine Überprüfung der projectB_branch enthält.

Resultierende Verzeichnisstruktur

projectA 
    projectB 
    other.txt 
    project.txt 
    A.txt 
    files.txt 

Siehe http://www.git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

0

Wenn ein Teilbaum hinzugefügt, so scheint es, dass das Präfix (Unterverzeichnis, in dem Sie den Teilbaum hinzufügen werden) nicht bereits vorhanden ist.

Ich arbeitete um dieses Problem herum, indem ich auf ein Festschreiben auscheckte, bevor dieses Unterverzeichnis existierte, die git Unterstruktur addiere, und dann mit der Verzweigung merging, die meinen alten Unterverzeichnisinhalt enthielt.

Verwandte Themen