it-swarm.com.de

Wie richtet man ein Git-Projekt ein, um ein externes Repo-Modul zu verwenden?

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?

201
Tom
  1. Sie haben ein Projekt - nennen Sie es MyWebApp, das bereits ein Github-Repo hat
  2. Sie möchten das jquery-Repository in Ihrem Projekt verwenden
  3. Sie möchten das Jquery-Repo als -Modul in Ihr Projekt einfügen.

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.

328
memmons

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.

20
WhyNotHugo

Am Ende fand ich http://github.com/evilchelu/braid es schien zu passen, wie ich von Submodulen und Remotes erwartete

2
Tom

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
0
Dapaldo