W jaki sposób mogę łatwo wcisnąć lokalną gałąź Git do pilota o innej nazwie?
Zastanawiałem się, czy jest łatwy sposób, aby wcisnąć i wyciągnąć lokalną gałąź ze zdalną gałąź o innej nazwie bez podawania obu nazw.
Na przykład:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Teraz jak ktoś zaktualizuje remote_branch_name to mogę:
$ git pull
I wszystko jest scalane / fast-forwarded. Jednak, jeśli wprowadzę zmiany w moim lokalnym "newb", nie mogę:
$ git push
Zamiast tego muszę:
% git push origin newb:remote_branch_name
Wydaje się trochę głupie. If git-pull
uses git-config branch.newb.merge
to determine where to pull from, dlaczego git-push
nie może mieć podobnej opcji konfiguracji? Jest na to jakiś fajny Skrót, czy mam kontynuować długą drogę? 4 answers
Jasne. Po prostu ustaw push.default
na upstream
, aby popychać gałęzie do ich strumieni upstream (które jest tym samym, z którego będzie pobierać pull
, zdefiniowane przez branch.newb.merge
), zamiast przesuwać gałęzie do gałęzi pasujących w nazwie (co jest domyślnym ustawieniem dla gałęzi push.default
, matching
).
git config push.default upstream
Zauważ, że wcześniej Git 1.7.4.2 nazywał się tracking
, a nie upstream
, więc jeśli używasz starszej wersji Git, użyj zamiast tego tracking
. Opcja push.default
została dodana w Git 1.6.4, więc jeśli korzystasz ze starszej wersji, nie będziesz mieć ta opcja w ogóle i będzie musiała jawnie określić gałąź, do której ma zostać wysłana.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-21 03:00:52
Po wykonaniu pierwszego wciśnięcia dodaj parametr-u :
git push -u origin my_branch:remote_branch
Kolejne pchnięcia pójdą tam, gdzie chcesz.
EDIT:
Jak w komentarzu, to tylko ustawia pull.
git branch --set-upstream
Powinno wystarczyć.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-28 02:26:27
Polecenie Adama jest teraz przestarzałe. Można użyć:
git branch --set-upstream-to origin/my_remote_branch my_local_branch
Aby ustawić gałąź upstream my_local_branch
na origin/my_remote_branch
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:59
Oto proces, który dla mnie zadziałał.
git clone original-repo-url
git remote rename origin upstream
git remote add origin new-repo-url
Teraz twoim nowym repo będzie 'origin', A oryginalnym repo będzie 'upstream'. Potwierdź to, uruchamiając git remote-v. (Uwaga: Upstream jest używany do pobierania z oryginalnego repo - w celu utrzymania lokalnej kopii w synchronizacji z projektem, do którego chcesz przyczynić się - a origin jest używany do ciągnięcia i pchania, ponieważ możesz przyczynić się do własnego repo).
git push origin master
Teraz Twój nowy Remote repo ' s master (na Github) będzie zsynchronizowany z oryginalnym wzorcem, ale nie będzie miał żadnej z gałęzi funkcji.
git rebase upstream/branch-name
git push origin master
Rebase jest inteligentnym połączeniem. Następnie wciśnij ponownie master, a zobaczysz wybraną gałąź funkcji jako master w nowym repo.
Opcjonalnie:
git remote rm upstream
git remote add upstream new-repo-url
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 21:40:25