2010-12-21 30 views
29

Ich habe ein Haupt-Git-Repository A und wir verwenden Quellen aus einem anderen Git-Repository B in einem Unterverzeichnis unseres Hauptprojekts. Jetzt wäre es gut, das B-Repository im A-Repository in diesem verwendeten Unterverzeichnis auszuchecken. Wenn jemand anderes dann das Repository klont, sollte er natürlich unser Haupt-Repository A und darin automatisch das B-Repository bekommen.Git-Repository im Git-Repository

Lassen Sie mir die Verzeichnisstruktur visualisieren:

 
+ main_repository  - the root directory of the main Repository 
    + src     - directory containing the source 
    + foreignRepo  - this should be the root directory of another git repo 
    + binaries 
    + other 

Dies muss auch im Remote-Repository bekannt sein, nur eine lokale Kopie hilft mir nicht, weil andere Leute dies überprüfen und muss in der Lage sein, Kompiliere alles.

+4

Sie sollten sich Git-Submodule für Ihre Bedürfnisse anschauen: http://book.git-scm.com/5_submodules.html –

+1

Aktualisierter Link: http://schacon.github.io/gitbook/5_submodules.html – twasbrillig

+0

Ein Blog post erklärt die Vor- und Nachteile jedes Ansatzes [Git Submodul: Git Subtree] (http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/). –

Antwort

22

Sie möchten über Git submodules lesen.

+1

Oder aus dem Pro Git Buch: http://progit.org/book/ch6-6.html – bdukes

5

Sie können zwei Git Repos verschachteln, ohne Submodule zu verwenden. Angenommen ChildRepo ist ein Unterverzeichnis von ParentRepo und beide sind Git-Repositories.

+ ParentRepo 
    - ChildRepo 

Wenn Sie ChildRepo eine Datei hinzufügen, ignoriert ParentRepo sie. Wenn Sie es bestätigen, wird es ChildRepo hinzugefügt. Es ist nicht möglich, Dateien in ChildRepo zu ParentRepo hinzuzufügen.

Weitere Informationen: Nested GIT repo gotchas!

+0

Ich habe gerade versucht, ein Kind Repo in einem Eltern Repo verschachteln. als ich eine Datei zu Child Repo hinzugefügt habe, habe ich 'cd ../' und 'git status' und der Eltern Repo hat * nicht * die neue Datei ignoriert. – chharvey

5

Verwenden git subtree in git Version 1.7.11 und höher. git subtree is superior to git submodule weil:

  • Verwaltung eines einfachen Arbeitsablaufs ist einfach. Ältere Versionen von git werden unterstützt (noch vor v1.5.2)
  • Der Code des Teilprojekts ist direkt nach dem Klon des Super-Projekt
  • git subtree getan wird, nicht die Benutzer des Repository benötigen, etwas Neues zu lernen, sie können die Tatsache ignorieren, dass Sie Unterstruktur verwenden Abhängigkeiten zu verwalten
  • git subtree fügt keine neue Metadaten-Dateien wie git submodule tut (wie .gitmodule)
  • Inhalt des Unterbaums kann, ohne dass eine separate Repository Kopie der geändert werden Abhängigkeit woanders

Zusätzlich, wenn Sie detach a subtree of your existing repository into a new repository benötigen, kann git subtree split Ihnen dabei helfen.

+0

Diese Antwort wurde ursprünglich hier gepostet: http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/ –

Verwandte Themen