2013-04-02 9 views
25

Ich bin mir nicht sicher, wie man das richtig fragt, aber ich werde versuchen, mein Bestes zu tun - ich bin keineswegs ein Git-Aficionado, ich weiß wie die grundlegenden Befehle zu verwenden aber keine fortgeschrittene Terminologie/Funktionalität.Git - Verschiedene Fernbedienung für jeden Zweig

Ich habe ein privates Repository myrepo geklont von einem privaten Server git.mydomain.com. Ich bin vertraut mit dem Prozess des mit git checkout -b mybranch auf demselben Repository Code Verzweigung - aber ich mag GitHub verzweigen, anstatt mein privater Server, was in etwa wie folgt:

Repo  Branch  Remote Location (Purpose) 
------------------------------------------------------------ 
myrepo --> private --> git.mydomain.com (Incremental work) 
    | 
    +------> public --> github.com  (Public releases) 

Im Wesentlichen würde ich gerne kann git checkout public und git merge private sein.

+0

Würde es zu Ihrem Workflow passen, den Zweig einfach auf einen anderen Ursprung (Github) zu schieben, wenn Sie bereit sind? – noisewaterphd

Antwort

30

Sie können einen anderen Zweig Satz für einzelne Zweige auf einen anderen Server schieben, indem Sie diese Befehle:

Ab Git 1.8.0:

git branch -u origin/foo foo 

Hinweis: Wenn die letzten foo wird weggelassen, es wird den aktuellen Zweig auswählen.

Ab Git 1.7.0:

git branch --set-upstream foo origin/foo 

In Ihrem Fall würden Sie diese verwenden, indem Sie Ihre zwei Fernbedienungen (mydomain und Github) Zugabe und jeder Zweig einstellen, um sie einzeln zu schieben. Es könnte wie folgt aussehen:

Achten Sie darauf, die Fernbedienung hinzufügen, wenn Sie nicht bereits haben:

git remote add github git://github.com/foo/myrepo.git 
git remote add mydomain git://git.mydomain.com/foo/myrepo.git 

dann die Zweige auf die richtigen Stellen zu schieben:

git branch -u mydomain/private private 
git branch -u github/public public 

Nach Dies ist alles eingerichtet, Sie können drücken und ziehen nur mit git push und git pull. Dies wird Push und Pull zu Github, wenn Sie in der öffentlichen Niederlassung sind, und zu Ihrem mydomain.com, wenn Sie in Ihrer privaten Zweigstelle sind.

+1

Super Antwort, danke! –

+0

@CraigWatson Schön zu helfen! –

+0

Ist es im selben Szenario möglich, git anzuweisen, Dateien selektiv zur öffentlichen Verzweigung hinzuzufügen? Zum Beispiel, wenn ich die Ordner dist, src und README.md privat habe und ich möchte nur dist und README.md in github, d. H. Dem öffentlichen Repo, erscheinen, wie kann ich das erreichen? –

Verwandte Themen