2014-12-02 21 views
14

Wir haben ein Repository, git-flow basiert, wo wir eine externe Bibliothek als Teilbaum (mit Atlassian SourceTree git Teilbaum) auf dem Entwicklungszweig hinzugefügt.git subtree fusioniert auf root des repository (w. Git-flow)

Project/ 
    Library/ 
    X/ 
    Y/ 
    Z/ 

Später haben wir ein git flow release, die Änderungen von der Entwicklung in Master (release) zu verschmelzen.

Das Problem ist, beim Auschecken Master, der Inhalt der Bibliothek wird auf den Stamm des Repository anstelle von innerhalb der Bibliothek platziert, wie es das git subtree Präfix während der Zusammenführung verloren hatte.

Project/ 
    X/ 
    Y/ 
    Z/ 

Irgendeine Idee, was falsch gelaufen ist?

+0

Sind Sie sicher, dass es zuerst in einem Unterordner war? Was passiert, wenn du einen neuen Zweig aus dem alten Master erstellst und das ganze nochmal probierst, passiert das nochmal? – iberbeu

+0

Ja ist es. Im Entwicklungszweig befindet sich ein Unterordner. Es war der git-flow-Release-Prozess, der den Teilbaum-Zeiger nicht erhalten zu haben scheint. –

+2

Sortierung einer dummen Frage, aber wo befindet sich Ihr .git-Ordner? –

Antwort

1

Die Unterstruktur selbst hat ihr eigenes Stammverzeichnis in einer eigenen Verzweigung. Siehe http://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging, vor allem:

Sie wollen das Rack-Projekt in Ihr Masterprojekt als Unterverzeichnis ziehen. Sie können das in Git mit git read-tree tun. Sie werden lernen, mehr über lesen-Baum und seine Freunde in Kapitel 9, aber für jetzt wissen , dass es den Stammbaum von einem Zweig in Ihre aktuelle Bereitstellung Bereich und Arbeitsverzeichnis liest. Sie schaltet einfach zurück zu Ihrem Master Zweig, und ziehen Sie das Rack Zweig in das Rack Unterverzeichnis von Ihre master-Zweig des Hauptprojekt:

$ git lesen Baum prefix = Rack/-u rack_branch

+0

Das beschreibt die Teilbaumverschmelzungsstrategie, ich benutze git-subtree (Siehe https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt). –

Verwandte Themen