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
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.
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
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
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>
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.
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.
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
.
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!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ę .
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]
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.
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,
- -u : ustawia gałąź upstream
- remote_name: git domyślnie ustawia nazwę jako "origin" podczas tworzenia repozytorium. Można to jednak zmienić na inny arbitralny nazwisko.
- local_branch_name: jest nazwą lokalnej gałęzi do wypchnięcia.
- 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ż.
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
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.
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)
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ąć.
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:
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