2012-09-13 6 views
5

Wenn ich ein Hauptprojekt habe, das versionskontrolliert ist.Wie funktionieren Git-Fernbedienungen?

ich dann eine Fernbedienung für einen Dritten

git remote add myplugin <url>

dann kann ich git pull myplugin master tun Plugin hinzufügen

und es zieht nur in den Änderungen von dieser Fernbedienung.

können nun mein Projekt ist Setup sagen wie:

/ 
/index.php 
/whatever 

und die Remote-Setup ist wie

/ 
/whatever.php 

, wenn ich in der Fernbedienung ziehe ich mit

/index.php 
/whatever 
/myplugin 
/myplugin/whatever.php 

Ende das ist gut.

Was ich frage mich heißt, Wenn ich Änderungen an myplugin machen,

Wenn ich ausgeben git push myplugin master was gedrückt wird?

Wird es nur Änderungen in Myplug drücken? oder fungiert ein Remote als zweites Repository und wird das gesamte Repository festgeschrieben?

Antwort

6

Sie würden am Ende, nach einem git pull myplugin, in /myplugin/whatever.php nur, wenn die Remote-Repo bereits /myplugin/whatever.php enthält (nicht juut whatever.php)

ein Remote-Mittel Hinzufügen von all seine Geschichte ziehen und es in Ihre Repo-Fusion, oder schieben Sie Ihre Commits von alle Ihr Repo in die Fernbedienung (nicht nur die Änderungen von Ihrem lokalen 'myplugin').

Was Sie beschreiben (nur die Änderungen von ‚myplugin‘ drücken oder ziehen begeht nur in ‚myplugin‘) submodules genannt wird.

git submodule add url/myplugin myplugin 

, dass ein Verzeichnis myplugin hinzufügen würde, in dem Sie ein zweites verschachteltes Git Repo Handeln finden würden, wie Sie in Ihrer Frage beschreiben.
Es ist nicht nur eine neue Remote-, sondern eine Submodul-URL für die Aufnahme in ein Unterverzeichnis eines anderen Repo bei einem bestimmten SHA1.

0

Die Fernbedienung verhält sich wie ein zweites Repository, weil es eins ist ... wenn Sie einen Push-Befehl ausgeben, kopiert GIT das, was geändert wurde, auf die Fernbedienung und bringt es wieder in Einklang mit Ihrem lokalen Repository.

Wenn Sie fragen, ob der Push in Unterverzeichnisse übergeht, lautet die Antwort ja.

Wenn Sie gefragt werden, ob Änderungen, die noch nicht in Ihr lokales Repository übernommen wurden, an die Gegenstelle übertragen werden, ist die Antwort nein.