Utworzyłem lokalny oddział, który chcę „przepchnąć” w górę. Podobne pytanie dotyczy przepełnienia stosu, jak śledzić nowo utworzoną gałąź zdalną.
Jednak mój przepływ pracy jest nieco inny. Najpierw chcę utworzyć lokalny oddział i zepchnę go wcześniej, gdy będę zadowolony i chcę udostępnić mój oddział.
- Jak mam to zrobić? (moje wyszukiwania w Google nic nie wymyśliły).
- Jak mam powiedzieć moim kolegom, aby wyciągnęli go z repozytorium nadrzędnego?
AKTUALIZACJA W Git 2.0 istnieje prostsza odpowiedź, którą napisałem poniżej: https://stackoverflow.com/a/27185855/109305
git
branch
git-branch
Jesper Rønn-Jensen
źródło
źródło
get fetch --all
pobiera nowe gałęzie po stronie zdalnej (ale tylkoget fetch --prune
lokalnie usuwa odniesienia do usuniętych gałęzi zdalnych). Myślę, że albo to powinno być ustawione przez nich automatycznie, albo musisz z nimi porozmawiać ustnie.Odpowiedzi:
Najpierw tworzysz swój oddział lokalnie:
Oddział zdalny jest tworzony automatycznie po przekazaniu go do zdalnego serwera. Więc kiedy czujesz się na to gotowy, możesz po prostu:
Gdzie
<remote-name>
zwykle jestorigin
nazwa, którą git nadaje pilotowi, z którego sklonowałeś. Twoi koledzy po prostu ściągną tę gałąź i zostanie ona automatycznie utworzona lokalnie.Należy jednak pamiętać, że formalnie format jest następujący:
Ale jeśli pominiesz jeden, zakłada się, że obie nazwy gałęzi są takie same. Powiedziawszy to, jako ostrzeżenie , nie popełniaj krytycznego błędu, określając tylko
:<remote-branch-name>
(z dwukropkiem), w przeciwnym razie gałąź zdalna zostanie usunięta!Aby kolejny
git pull
wiedział, co robić, możesz zamiast tego użyć:Jak opisano poniżej,
--set-upstream
opcja ustanawia odgałęzienie:źródło
git push <remote>
nie wypychałoby gałęzi, jeśli nie jest obecne<remote>
.git push -u <remote-name> <branch-name>
zamiast tego, aby kolejnygit pull
wiedział, co robić.origin
, co oznacza „serwer, z którego mam resztę repozytorium”: w ten sposóbgit push origin <branch-name>
.-u
opcji, możesz po prostu wpisaćgit push -u
później w oddziale, a następniegit pull
zadziała.git push -u origin <local-branch-name>
to działało dla mnie.Najpierw musisz utworzyć swój oddział lokalnie
Następnie możesz pracować lokalnie w swoim oddziale, gdy będziesz gotowy, aby udostępnić gałąź, popchnij ją. Następne polecenie wypycha gałąź do źródła zdalnego repozytorium i śledzi ją
Członkowie drużyny mogą dotrzeć do twojego oddziału, wykonując:
Możesz kontynuować pracę w gałęzi i pchanie, kiedy chcesz, bez przekazywania argumentów do git push (bez argumentów git push popchnie master do zdalnego master, twoja gałąź lokalna do zdalnej twojej gałęzi itp.)
Koledzy z drużyny mogą naciskać na twój oddział, wykonując zatwierdzenia, a następnie pchać jawnie
Lub śledzenie gałęzi, aby uniknąć argumentów git push
źródło
Proste rozwiązanie Git 2.0+:
Od wersji 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 przesunąć nową gałąź w górę
-u
będzie śledzić zdalną gałąź o tej samej nazwie. Teraz w tej konfiguracji automatycznie zgadniesz zdalne odniesienie do git push. Z dokumentacji git.config :Dla mnie jest to dobre uproszczenie mojego codziennego przepływu pracy w Git. Ustawienie konfiguracji zajmuje się „zwykłym” przypadkiem użycia, w którym dodajesz oddział lokalnie i chcesz go utworzyć zdalnie. Mogę również równie łatwo tworzyć lokalne oddziały z pilotów, po prostu robiąc
git co remote_branch_name
(w przeciwieństwie do używania--set-upstream-to
flagi).Wiem, że to pytanie, a akceptowane odpowiedzi są dość stare, ale zachowanie się zmieniło, dzięki czemu istnieją teraz opcje konfiguracji upraszczające przepływ pracy.
Aby dodać do globalnej konfiguracji Git, uruchom to w wierszu poleceń:
źródło
git push -u origin HEAD
odpowiedź tutaj jest nieco bardziej szczegółowa (piszesz, co robisz), nie będąc zbyt wielkim, by pisać. Ponadto,git push -u
bez dodatkowych argumentów nie działałoby dla mnie, jeśli gałąź została utworzona za pomocą-t
git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u
nie działa (od git 2.19.1); Push wymaga argumentów zdalnego i rozgałęzienia.git co remote_branch_name
?Jak stwierdzono w poprzednich odpowiedziach,
wystarczy do wypchnięcia lokalnego oddziału.
Twoi koledzy mogą pobrać wszystkie zdalne gałęzie (w tym nowe) za pomocą tego polecenia:
Następnie, aby wprowadzić zmiany w gałęzi, zwykły przepływ:
źródło
Utwórz nowy oddział lokalnie w oparciu o bieżący oddział:
Zatwierdź wszelkie zmiany w normalny sposób. Następnie pchnij go w górę:
Jest to skrót do wypchnięcia bieżącej gałęzi do gałęzi o tej samej nazwie
origin
i śledzenia, abyś nie musiał określaćorigin HEAD
w przyszłości.źródło
git push -u origin HEAD
. Myślę, że to najbardziej klarowny sposób.git status
pierwszego uruchomienia .git remote show origin
jako trzeci krok, aby zobrazować nową relację śledzenia / śledzenia.Jeśli chcesz utworzyć gałąź z bieżącej gałęzi
chcesz oddziału ze zdalnego oddziału, możesz spróbować
Jeśli skończysz ze zmianami, możesz dodać plik.
Następnie wykonaj zatwierdzenie lokalnie
Gdy chcesz przełączyć się na zdalne repozytorium
Wszystko razem będzie
lub Jeśli chcesz utworzyć oddział ze zdalnego oddziału, powiedz programowanie
git checkout -b poprawki_błędów pochodzenie / rozwój
Możesz przekazać do oddziału w celu zdalnego repo przez
Za każdym razem, gdy chcesz zaktualizować swój oddział z dowolnego innego oddziału, powiedz master .
git pull origin master
.źródło
Jeśli chcesz po prostu utworzyć oddział zdalny bez lokalnego, możesz to zrobić w następujący sposób:
Pcha cokolwiek, co jest w twojej głowie, aby rozgałęzić foo, które nie istniały na pilocie.
źródło
Najłatwiejsze rozwiązanie ... Drumm Roll ... git wersja 2.10.1 (Apple Git-78)
Uwaga - Oddział, który właśnie utworzyłeś w środowisku lokalnym, oraz nieistniejący zdalny oddział, w którym próbujesz pchać, musi mieć tę samą nazwę .
źródło
git push -u
jest o wiele łatwiejsze. Wymaga posiadania jednej globalnej linii konfiguracji, patrz stackoverflow.com/a/27185855/109305 . Używamgit push -u
stale, to pokrywa 99% moich przypadków użycia podczas pracy.[Szybka odpowiedź]
Możesz to zrobić w 2 krokach:
1. Użyj
checkout
do utworzenia lokalnego oddziału:2. Użyj
push
polecenia, aby automatycznie utworzyć gałąź i wysłać kod do zdalnego repozytorium:źródło
Najpierw utwórz oddział lokalnie:
A następnie zdalnie utworzyć oddział:
Uwaga: Działa to w najnowszych wersjach git:
Twoje zdrowie!
źródło
git push
gdy lokalny oddział nie jest śledzony zdalnie.Wciśnij gałąź na github:
Jeśli chcesz coś zatwierdzić w swoim oddziale, pamiętaj, aby być w swoim oddziale.
Możesz zobaczyć wszystkie oddziały utworzone za pomocą:
Który pokaże:
Dodaj nowego pilota do swojego oddziału:
Przekaż zmiany ze swojego zatwierdzenia do swojego oddziału:
Zaktualizuj swój oddział, gdy oryginalny oddział z oficjalnego repozytorium zostanie zaktualizowany:
Następnie musisz złożyć wniosek o scalenie zmian, jeśli twoja gałąź wywodzi się z rozwoju, musisz:
Usuń gałąź w lokalnym systemie plików:
Aby wymusić usunięcie lokalnego oddziału w systemie plików:
Usuń gałąź z github:
Tutaj wszystkie informacje
Inne istniejące projekty
źródło
Tworzenie gałęzi lokalnej z istniejącej gałęzi (może być master / develop / any-other-branch).
Wciśnij to do pilota
Tutaj,
Jeśli usuniemy lokalne i zdalne nazwy oddziałów, będą miały format
Spowoduje to wypchnięcie oddziału lokalnego do zdalnego i o tej samej nazwie, co oddział lokalny nazwa_oddziału. Oddział lokalny będzie również śledził oddział zdalny.
źródło
Wiem, że dobrze odpowiedzieliśmy na to pytanie, ale chciałem tylko wymienić kroki, które podejmuję, aby utworzyć nową gałąź „myNewBranch” i wcisnąć zdalnie (w moim przypadku „origin”) i skonfigurować śledzenie. Rozważ to w wersji „TL; DR” :)
źródło
Teraz w git możesz po prostu pisać, gdy jesteś we właściwej gałęzi
git push --set-upstream origin <remote-branch-name
>i git stworzy dla ciebie gałąź pochodzenia.
źródło
Chciałem tylko dodać, że:
Tworzy nowy oddział, sprawdza również ten oddział / czyni go Twoim bieżącym oddziałem. Jeśli z jakiegoś powodu wszystko, co chcesz zrobić, to oderwać gałąź, ale nie ustawić jej jako bieżącej gałęzi, możesz użyć następującego polecenia:
W pierwszym poleceniu „checkout” czyni z tej gałęzi bieżącą gałąź, a „-b” oznacza: ta gałąź jeszcze nie istnieje, więc zrób to dla mnie.
źródło
Jak to zrobić poprzez Drzewo Źródłowe
źródło
git push -u <remote-name> <branch-name>
nie działa, jeśli nowo utworzona gałąź nie jest spawnowana z tego samego repozytorium, tj. jeśli nie utworzyłeś nowej gałęzi przy użyciugit checkout -b new_branch
, to nie zadziała.Na przykład sklonowałem lokalnie dwa różne repozytoria i musiałem skopiować repo2 / branch1 do repo1 /, a następnie też je wypchnąć.
Ten link pomógł mi przesłać mój oddział lokalny (sklonowany z innego repozytorium) do mojego zdalnego repozytorium:
źródło
Oto jak to zrobić zaćmieniem poprzez Egit.
1) Przejdź do widoku „Eksploracja repozytorium git” i eksploruj projekt git, w którym chcesz utworzyć gałąź. W obszarze Brances -> Local .. 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ę kasy tego projektu, a następnie kliknij przycisk Zakończ.
2) Teraz z eksploratora projektu wybierz projekt .. kliknij prawym przyciskiem myszy, a następnie Zespół -> Oddział Push.
Zostanie utworzona nowa gałąź zdalna. Możesz podać nazwę oddziału swoim kolegom, aby mogli go pobrać.
źródło
Użyłem dwóch sposobów, aby utworzyć oddział
Jeśli używasz TortoiseGit, wykonaj następujące kroki: -
1. Utwórz oddział za pomocą TortoiseGit
2. Wciśnij gałąź
3. Przejdź do nowego oddziału
Jeśli używasz wiersza polecenia, wykonaj następujące kroki: -
1. Utwórz oddział za pomocą wiersza polecenia
2. Wciśnij gałąź
3.Przejdź do nowej gałęzi, która już przełączy się na nową_nazję_gałęzi, w przeciwnym razie możesz jej użyć
źródło
Korzystam z tego i jest to całkiem przydatne:
Nie potrzebujesz nawet statusu git; może chcę tylko upewnić się, że wszystko idzie dobrze ...
Możesz mieć ZARÓWNO LOKALNIE i ZDALNIE jednym poleceniem.
źródło