Jak utworzyć zdalną gałąź Git?

Utworzyłem lokalną gałąź, którą chcę "wypchnąć" pod prąd. Podobne pytanie pojawia się tutaj na Stack Overflow, jak śledzić nowo utworzoną zdalną gałąź.

Jednak mój przepływ pracy jest nieco inny. najpierw chcę utworzyć lokalną gałąź i będę ją wypychał pod prąd tylko wtedy, gdy będę zadowolony i będę chciał udostępnić swoją gałąź.

    Jak miałbym to zrobić? (moje wyszukiwania google nie wydają się pochodzić z niczego).
  • Jak bym powiedział moim kolegom, żeby ciągnęli to z upstream repozytorium?

Aktualizacja z Git 2.0 jest prostsza odpowiedź napisałem poniżej: https://stackoverflow.com/a/27185855/109305

Author: Community, 2009-10-05

17 answers

Najpierw tworzysz swoją gałąź lokalnie:

git checkout -b <branch-name> # Create a new branch and check it out

Zdalna gałąź jest automatycznie tworzona, gdy przepchniesz ją na zdalny serwer. Więc kiedy czujesz się na to gotowy, możesz po prostu zrobić:

git push <remote-name> <branch-name> 

Gdzie <remote-name> to typowo origin, nazwa, którą git nadaje zdalnemu, z którego sklonowałeś. Twoi koledzy po prostu wyciągną tę gałąź i zostanie ona automatycznie utworzona lokalnie.

Zauważ jednak, że formatem jest:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Ale kiedy pominąć jeden, to zakłada, że obie nazwy gałęzi są takie same. Mówiąc to, jako słowo Uwaga , nie popełniaj krytycznego błędu podając tylko :<remote-branch-name> (dwukropkiem), w przeciwnym razie zdalna gałąź zostanie usunięta!

Aby kolejny git pull wiedział co robić, możesz zamiast tego użyć:

git push --set-upstream <remote-name> <local-branch-name> 

Jak opisano poniżej, opcja --set-upstream ustawia gałąź upstream:

Dla każdej gałęzi, która jest aktualna lub pomyślnie wypchnięty, dodaj upstream (śledzenie) reference, używany przez argument-less git-pull(1) i inne polecenia.

 3355
Author: Ikke,
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-08-13 12:55:06

Najpierw musisz utworzyć swoją gałąź lokalnie

git checkout -b your_branch

Po tym, możesz pracować lokalnie w swojej gałęzi, kiedy będziesz gotowy, aby udostępnić gałąź, popchnij ją. Następne polecenie przesuwa gałąź do zdalnego repozytorium origin i śledzi ją

git push -u origin your_branch

Koledzy z drużyny mogą dotrzeć do Twojej gałęzi, wykonując:

git fetch
git checkout origin/your_branch

Możesz kontynuować pracę w gałęzi i naciskać kiedy chcesz bez przekazywania argumentów do git push (bez argumentu git push wypchnie master do remote master, your_branch local to remote your_branch, etc...)

git push

Członkowie drużyny mogą wcisnąć się do Twojej gałęzi wykonując commity, a następnie wcisnąć jawnie

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

Lub śledzenie gałęzi, aby uniknąć argumentów do git push

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
 807
Author: dseminara,
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-07-26 01:09:09

Proste rozwiązanie Git 2.0+:

Od Git 2.0 zachowanie stało się prostsze :

Możesz skonfigurować git za pomocą push.default = current aby ułatwić życie:

Dodałem to, więc teraz mogę po prostu wypchnąć nową gałąź pod prąd z

$ git push -u

-u będzie śledzić zdalną gałąź o tej samej nazwie. Nie z tą konfiguracją automatycznie odgadniesz zdalne odniesienie do git push. Od git.dokumentacja config :

Przyj.default

Definiuje akcję, którą git push powinien wykonać, jeśli nie podano jawnie żadnego refspec.

push.default = current - naciśnij bieżącą gałąź, aby zaktualizować gałąź z ta sama nazwa na końcu odbiorczym. Działa zarówno w centralnych, jak i niecentrycznych przepływach pracy.

Dla mnie jest to dobre uproszczenie mojego codziennego przepływu pracy Git. Ustawienie konfiguracji zajmuje się "zwykłym" przypadkiem użycia, w którym dodajesz gałąź lokalnie i chcesz ją utworzyć zdalnie. Również, mogę tak samo łatwo twórz lokalne gałęzie z pilotów, wykonując po prostu git co remote_branch_name (W przeciwieństwie do użycia znacznika --set-upstream-to).

Wiem, że to pytanie i zaakceptowane odpowiedzi są dość stare, ale zachowanie zmieniło się tak, że teraz istnieją opcje konfiguracji, aby ułatwić przepływ pracy.

Aby dodać do globalnej konfiguracji Git, uruchom to w wierszu poleceń:

$ git config --global push.default current
 250
Author: Jesper Rønn-Jensen,
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-09-26 06:50:27

Jak stwierdzono w poprzednich odpowiedziach,

git push <remote-name> <local-branch-name>:<remote-branch-name>

Wystarcza do popychania lokalnego oddziału.

Twoi koledzy, mogą wyciągnąć wszystkie zdalne gałęzie (w tym nowe) za pomocą tego polecenia:

git remote update

Następnie, aby dokonać zmian na gałęzi, zwykły przepływ:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>
 67
Author: Lucian,
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-12-27 16:18:54

Utwórz nową gałąź lokalnie w oparciu o bieżącą gałąź:

git checkout -b newbranch

Zatwierdź wszelkie zmiany tak, jak zwykle. Następnie wciśnij go pod prąd:

git push -u origin HEAD

Jest to skrót do przesuwania bieżącej gałęzi do gałęzi o tej samej nazwie na origin i śledzenia jej tak, że nie musisz podawać origin HEAD w przyszłości.

 54
Author: Zenexer,
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
2014-02-24 14:58:49

Jeśli chcesz po prostu utworzyć zdalną gałąź bez posiadania lokalnej, możesz to zrobić tak:

git push origin HEAD:refs/heads/foo

Popycha to, co jest twoją głową do gałęzi foo , które nie istniało na pilocie.

 35
Author: Tassadar,
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
2015-11-25 15:29:39

Jeśli chcesz utworzyć gałąź z bieżącej gałęzi

git checkout -b {your_local_branch_name} 

Chcesz gałąź od zdalnej gałęzi, możesz spróbować

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

Jeśli skończysz ze zmianami, możesz dodać plik.

git add -A or git add <each_file_names>

Następnie wykonaj commit lokalnie

git commit -m 'your commit message'

Kiedy chcesz nacisnąć na remote repo

git push -u origin <your_local_branch_name>

Wszyscy razem będą

git checkout -b bug_fixes 

Lub Jeśli chcesz utworzyć gałąź z gałęzi zdalnej powiedz development

Git checkout-b bug_fixes pochodzenie / rozwój

Możesz wcisnąć gałąź do zdalnego repo przez

git push -u origin **bug_fixes**

Jeśli chcesz zaktualizować swoją gałąź z innej gałęzi, powiedz master .

git pull origin master.

 24
Author: sreekumar,
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-05 08:46:29

Najpierw tworzysz gałąź lokalnie:

git checkout -b your_branch

A następnie utworzyć gałąź zdalnie:

git push --set-upstream origin your_branch

Uwaga: działa to na najnowszych wersjach git:

$ git --version
git version 2.3.0
Zdrówko!
 22
Author: ipegasus,
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
2015-04-21 23:43:46

Najprostsze Rozwiązanie... Drumm Roll . git Wersja 2.10.1 (Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes , and go a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

N. B. - gałąź, którą właśnie stworzyłeś w swoim lokalnym środowisku, oraz odległa, nieistniejąca gałąź, do której próbujesz wcisnąć, muszą mieć tę samą nazwę .

 17
Author: sapy,
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
2018-07-20 07:40:07

Utwórz gałąź na lokalnym komputerze i przełącz w tej gałęzi:

$ git checkout -b [name_of_your_new_branch]

Wciśnij gałąź na GitHubie:

$ git push origin [name_of_your_new_branch]

Jeśli chcesz coś popełnić w swojej gałęzi, pamiętaj, aby być w swojej gałęzi.

Możesz zobaczyć wszystkie gałęzie utworzone za pomocą :

$ git branch

Który pokaże:

* approval_messages
  master
  master_clean

Dodaj nowy pilot do swojej gałęzi:

$ git remote add [name_of_your_remote] 

Wypchnij zmiany z twojego commita do Twojej gałęzi:

$ git push origin [name_of_your_remote]

Zaktualizuj swoją gałąź kiedy oryginalna gałąź z oficjalnego repozytorium została zaktualizowana:

$ git fetch [name_of_your_remote]

Następnie musisz zastosować do scalania zmian, jeśli twoja gałąź jest wyprowadzona z develop musisz to zrobić:

$ git merge [name_of_your_remote]/develop

Usuń gałąź na lokalnym systemie plików:

$ git branch -d [name_of_your_new_branch]

Aby wymusić usunięcie lokalnej gałęzi na Twoim systemie plików:

$ git branch -D [name_of_your_new_branch]

Usuń gałąź na GitHubie:

$ git push origin :[name_of_your_new_branch]

Tutaj Wszystkie Informacje

Inne istniejące projekty

 16
Author: Numan Turkeri,
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-05-27 11:39:29

Teraz z git, możesz po prostu wpisać, gdy jesteś we właściwej gałęzi

git push --set-upstream origin <remote-branch-name>

I git tworzy dla Ciebie gałąź origin.

 8
Author: Maurizio Brioschi,
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
2014-10-27 17:05:42

Tworzenie lokalnej gałęzi z istniejącej gałęzi (może być master/ develop/ any-other-branch).

Git checkout - B branch_name

Push this to remote

Git push-u remote_name local_branch_name:remote_branch_name

Tutaj,

  1. -u : ustawia gałąź upstream
  2. remote_name: git domyślnie ustawia nazwę jako "origin" podczas tworzenia repozytorium. Można to jednak zmienić na inny arbitralny nazwisko.
  3. local_branch_name: jest nazwą lokalnej gałęzi do wypchnięcia.
  4. remote_branch_name: jest nazwą zdalnej gałęzi, którą chcemy utworzyć na zdalnym.

Jeśli usuniemy nazwy lokalnych i zdalnych gałęzi, będzie ona miała format

Git push-u remote_name branch_name

Spowoduje przesunięcie lokalnej gałęzi do zdalnego i o tej samej nazwie co lokalna gałąź branch_name. Lokalny oddział będzie śledził zdalnego branch również.

 8
Author: iosCurator,
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-15 06:57:20

Wiem, że to pytanie jest dobrze odpowiedział, ale po prostu chciałem wymienić kroki, które podejmuję, aby utworzyć nową gałąź "myNewBranch" i wcisnąć do zdalnego ("origin" w moim przypadku)i skonfigurować śledzenie. Rozważ to wersja "TL; DR":)

# create new branch and checkout that branch
git checkout -b myNewBranch
# now push branch to remote 
git push origin myNewBranch
# set up the new branch to track remote branch from origin
git branch --set-upstream-to=origin/myNewBranch myNewBranch
 7
Author: sufinawaz,
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
2014-10-23 14:09:17

Chciałem tylko dodać, że while:

git checkout -b {branchName}

Tworzy nową gałąź, sprawdza również tę gałąź / czyni z niej bieżącą gałąź. Jeśli, z jakiegoś powodu, wszystko co chcesz zrobić to zerwać gałąź, ale nie uczynić z niej bieżącej gałęzi, wtedy użyjesz następującego polecenia:

git branch {branchName}

W pierwszym poleceniu, "checkout" sprawia, że branch jest Twoją bieżącą gałęzią, A "-b" oznacza: ta gałąź jeszcze nie istnieje, więc zrób to dla mnie.

 6
Author: Brian Sachetta,
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
2015-03-30 14:02:24

Jak zrobić przez drzewo źródłowe

 1: Open SourceTree, click on Repository -> Checkout
 2 :Click on Create New Branch
 3: Select branch where from you want to get code for new branch 
 4: Give your branch name
 5: Push the branch  (by click on Push button)
 4
Author: Monis Majeed,
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
2015-07-21 11:27:20

Oto Jak to zrobić w eclipse poprzez Egit.

1) Przejdź do widoku "Git repozytorium Exploring" i eksplanduj projekt git, do którego chcesz utworzyć gałąź. Pod Brankami - > Lokalne .. wybierz gałąź, dla której chcesz utworzyć gałąź ( w moim przypadku wybrałem master .. możesz wybrać inną gałąź, jeśli chcesz) .. następnie kliknij prawym przyciskiem myszy i kliknij opcję Utwórz gałąź .. i wybierz opcję realizacji tego projektu, a następnie kliknij przycisk Zakończ.

2) teraz Od Eksplorator projektu wybiera projekt .. kliknij prawym przyciskiem myszy, a następnie Team - > Push Branch.

Zostanie utworzona nowa zdalna gałąź. Możesz podać nazwę oddziału swoim kolegom, aby mogli go wyciągnąć.

 3
Author: user2225713,
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
2014-01-31 23:46:50

git push -u <remote-name> <branch-name> nie działa, jeśli nowo utworzona gałąź nie zostanie wywołana z tego samego repo, tzn. jeśli nowa gałąź nie została utworzona przy użyciu git checkout -b new_branch, to nie będzie działać.

Np. sklonowałem lokalnie dwa różne repozytoria i musiałem skopiować repo2 / branch1 do repo1 / a następnie go wcisnąć.

Ten link pomógł mi wypchnąć moją lokalną gałąź (sklonowaną z innego repo) do mojego zdalnego repo:

 3
Author: brokenfoot,
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
2014-02-24 21:38:11