Ich möchte ein Repo erstellen, das ein Remote-Repo einliest.
Nehmen wir zum Beispiel jQuery als Submodul:
git://github.com/jquery/jquery.git
Was wäre der Prozess, ein Repo mit jQuery als Submodul zu erstellen und mein eigenes externes als Remote-Repo hinzuzufügen.
Auch wenn dies einmal eingerichtet ist, bleibt das externe Gerät erhalten, wenn ich auf meine eigene Fernbedienung drücke/drücke?
Submodule sind wirklich einfach zu referenzieren und zu verwenden. Vorausgesetzt, Sie haben MyWebApp bereits als Repo eingerichtet, geben Sie vom Terminal die folgenden Befehle aus:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
Dadurch wird ein Verzeichnis mit dem Namen externals/jquery
* erstellt und mit dem Repository von github jquery verknüpft. Jetzt müssen wir nur noch das Submodul initialisieren und den Code darauf klonen:
git submodule update --init --recursive
Sie sollten jetzt den neuesten Code in das Submodul geklont haben. Wenn sich das Jquery-Repo ändert und Sie den neuesten Code herunterziehen möchten, geben Sie einfach den Befehl submodule update
erneut ein. Bitte beachten Sie: Ich habe normalerweise eine Reihe von externen Repositorys in meinen Projekten, daher führe ich die Repos immer unter einem "externen" Verzeichnis.
Das Online Pro Git Book enthält einige gute Informationen zu Submodulen (und generell zu Git), die leicht lesbar dargestellt werden. Alternativ gibt git help submodule
auch gute Informationen. Oder werfen Sie einen Blick auf das Git Submodule Tutorial im Git Wiki.
Ich habe diesen Blogeintrag bemerkt, der über Submodule spricht und sie mit dem svn: externals-Mechanismus von Subversion vergleicht: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
* Als bewährte Methode sollten Sie Ihre Submodule immer in einem eigenen Verzeichnis ablegen, z. B. Extern. Wenn Sie dies nicht tun, kann Ihr Root-Projektverzeichnis sehr schnell unübersichtlich werden.
Das meiste, was Sie wissen müssen, wurde bereits beantwortet, daher werde ich mich nicht darum kümmern, dass ich jedoch eine kleine Information gefunden habe, die normalerweise fehlt.
Wie Sie wissen, aktualisiert "git pull" die Submodule nicht und "git submodules update" lädt auch nicht die neuesten HEAD dieser Submodule herunter.
Um alle Submodule auf ihre neueste Upstream-Version zu aktualisieren, können Sie verwenden
git submodule foreach git pull
Wenn Sie häufig Ihre Submodule ändern und viele davon haben, wird "git foreach" von unschätzbarem Wert.
Am Ende fand ich http://github.com/evilchelu/braid es schien zu passen, wie ich von Submodulen und Remotes erwartete
Ich denke, die @Hugo-Antwort könnte das sein, was Sie brauchen und gut funktioniert. So habe ich einen leichteren Weg gefunden.
git submodule update --remote
Das ist alles.
Ein vollständiger Workflow könnte also sein:
git clone project-with-submodules
git submodule init
git config -l
git submodule update --remote