2014-07-18 10 views
41

Ich habe ein Repository namens Generic, die eine generische Anwendung ist. Ich habe es in ein Repository namens Acme gegabelt, das nur auf dem gespeicherten Generic Repository aufbaut und das Acme Co Branding hinzufügt.Git ziehen von einem anderen Repository

Wenn ich Änderungen an der Kernfunktionalität in Generic ich die Acme Repository mit den neuesten Änderungen aktualisieren möchte ich die Kernfunktionalität in Generic gemacht haben. Wie würde ich das tun?

Soweit ich das beurteilen kann, versuche ich im Wesentlichen die Änderungen, die in einem Upstream-Repository vorgenommen wurden, in den aktuellen Fork zusammenzuführen.

Wenn es irgendetwas bedeutet, versuche ich dies zu tun, weil ich eine generische Anwendung habe, die ich dann für einzelne Clients aufstellen und Marke (wie Acme in diesem Beispiel). Wenn es einen saubereren Weg gibt, lass es mich wissen.

Antwort

62

Geben Sie den folgenden Befehl in Ihrem Acme Repo ein. Es fügt ein neues Remote-Repository mit dem Namen upstream hinzu, das auf das Repository Generic verweist.

git remote add upstream https://location/of/generic.git 

Sie können dann Generic in den aktuellen Zweig in Acme mit dem folgenden Befehl alle Änderungen zusammen:

git pull upstream 

Wenn Sie wollen, dass es nur um die Änderungen zu laden, ohne dass automatisch Zusammenführen verwenden git fetch statt von git pull.

Wenn Sie das Repository schieben deaktivieren möchten, stellen Sie die Push-URL auf eine ungültige URL etwas wie

mit
git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP" 

Git wird nun an Sie schreien über keinen Repo zu finden in der Lage, wenn Sie versuchen, Push to upstream (und tut mir leid wegen der Rickroll, aber es war die erste zufällige Zeichenfolge, die mir in den Kopf poppte).

+3

Ausgezeichnet, danke. Nur noch eine andere Sache: Gibt es eine Möglichkeit, diese Fernbedienung schreibgeschützt zu machen, so dass ich nicht versehentlich darauf stoße? – Libbux

+1

Ich fing an zu antworten, aber ich sehe, dass McLovin bereits seine Antwort editiert hat, um das mit einzuschließen. –

+1

Seit git 2.9 müssen Sie das Flag --allow-unrelated-histories angeben. Siehe https://StackOverflow.com/a/37938036/3799847 –

Verwandte Themen