2013-04-02 12 views
25

Nie jestem pewien, jak właściwie to spytać, ale postaram się zrobić co w mojej mocy - nie jestem w żadnym stopniu miłośnikiem Git, znam jak używać do używania podstawowych poleceń ale nie zaawansowana terminologia/funkcjonalność.Git - inny pilot dla każdego oddziału

Mam prywatne repozytorium myrepo sklonowane z prywatnego serwera git.mydomain.com. Jestem zaznajomiony z procesem rozgałęzień kodu w tym samym repozytorium z git checkout -b mybranch - jednak chciałbym rozgałęziać do GitHub zamiast mojego prywatnego serwera, w wyniku czego mniej więcej tak:

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

Zasadniczo chciałbym aby móc git checkout public i git merge private.

+0

Czy pasowałbyś do swojego przepływu pracy, aby po prostu przesunąć gałąź do innego źródła (Github), kiedy jesteś gotowy? – noisewaterphd

Odpowiedz

30

Można ustawić inny oddział pchnąć do innego serwera dla poszczególnych oddziałów za pomocą tych poleceń:

Jak Git 1.8.0:

git branch -u origin/foo foo 

Uwaga: Jeśli ostatnia foo jest pominięty, wybierze bieżącą gałąź.

Jak Git 1.7.0:

git branch --set-upstream foo origin/foo 

W twoim przypadku, należałoby użyć, dodając swoje dwa piloty (MojaDomena i github) i ustawienie każdego oddziału pchnąć do nich indywidualnie. Może to wyglądać mniej więcej tak:

Upewnij się dodać piloty, jeśli jeszcze go nie masz:

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

Następnie ustaw gałęzie Przekazanie na właściwych miejscach:

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

Po to wszystko jest skonfigurowane, możesz naciskać i ciągnąć tylko za pomocą git push i git pull. Spowoduje to naciśnięcie i przeciągnięcie do github, gdy jesteś w oddziale publicznym i na stronie mydomain.com, gdy jesteś w swoim prywatnym oddziale.

+1

Niesamowita odpowiedź, dzięki! –

+0

@CraigWatson Cieszę się, że mogę Ci pomóc! –

+0

W tym samym scenariuszu, czy można powiedzieć git, aby wybiórczo dodać pliki do oddziału publicznego? Na przykład, jeśli mam foldery dist, src i README.md w trybie prywatnym i chcę, aby tylko dist i README.md pojawiały się w github, tj. Publiczne repozytorium, jak mogę to osiągnąć? –

Powiązane problemy