Mam już lokalną gałąź główną śledzącą zdalną gałąź główną projektu github. Teraz mój współpracownik utworzył nowy oddział w tym samym projekcie i chcę odpowiednio wykonać następujące czynności:
- utwórz nowy oddział lokalnie
- spraw, aby ta nowa gałąź śledziła nowo utworzoną gałąź zdalną.
Jak mam to zrobić poprawnie?
git
github
git-branch
MLister
źródło
źródło
git checkout -t <remote>/<whatever>
. Jeśli kończy się tylko jedna gałąź zdalnego śledzenia,<whatever>
możesz nawet zrobićgit checkout <whatever>
i zgadnąć, co masz na myśli.Odpowiedzi:
Pierwsze polecenie upewnia się, że masz zdalną gałąź w lokalnym repozytorium. Drugie polecenie tworzy gałąź lokalną, która śledzi gałąź zdalną. Zakłada się, że Twoja zdalna nazwa to
origin
i nazwa oddziałubranch-name
.--track
opcja jest domyślnie włączona dla zdalnych oddziałów i można ją pominąć.źródło
git checkout <branchname>
a git automatycznie ją sprawdzi i skonfiguruje gałąź śledzenia. Chciałem tylko powtórzyć to, co @ Mark Longair powiedział powyżej w tym komentarzu: stackoverflow.com/questions/11262703/… .remotes/origin/develop
? Czy nie powinno tak byćorigin/develop
? Czy to są te same?git fetch --all
, w przeciwnym razie nowe oddziały nie byłyby pobieranecmd
, zaćmienie wykryje nową gałąź?Jeśli nie masz istniejącego oddziału lokalnego, jest to naprawdę tak proste, jak:
Na przykład, jeśli pobierasz i istnieje nowa gałąź zdalnego śledzenia o nazwie
origin/feature/Main_Page
, po prostu wykonaj następujące czynności:To tworzy gałąź lokalną o tej samej nazwie co gałąź zdalna, śledząc tę gałąź zdalną. Jeśli masz wiele pilotów o tej samej nazwie oddziału, możesz użyć mniej dwuznacznych:
Jeśli masz już lokalną gałąź i nie chcesz jej usuwać, zobacz Jak sprawić, aby istniejąca gałąź Git śledziła gałąź zdalną? .
źródło
git checkout 1.5-branch
(remotes/upstream/1.5-branch
jest na wyjściugit branch -a
) powoduje, żeerror: pathspec '1.5-branch' did not match any file(s) known to git.
zmiana tego ustawienia nagit checkout upstream/1.5-branch
odłączony HEAD nie powoduje utworzenia lokalnego oddziału. Myślę, że ta część odpowiedzi jest po prostu błędna. To jest z git 2.4.3<remote>/<branch>
. Zdalna gałąź śledzenia jest tylko do odczytu, co wskazuje, gdzie gałąź ta znajdowała się na zdalnym podczas ostatniego pobierania. Wezwaniecheckout
do tego oddziału powoduje przejście do trybu HEAD odłączonego, tak jak mówi Piotr. Pamiętaj, że określenie zdalnej gałęzi do pobrania pozwala uniknąć tworzenia niepożądanych gałęzi zdalnego śledzenia.git checkout feature-branch
. NIE sugeruję używania polecenia,git checkout origin/feature-branch
które, jak oboje zauważyliście, spowoduje nieprzydatną odłączoną głowę.Przede wszystkim musisz pobrać zdalne repozytorium:
Następnie możesz utworzyć nowy oddział i skonfigurować go, aby śledził żądany oddział zdalny:
Możesz także użyć „git branch --track” zamiast „git checkout -b”, jak podano maks.
źródło
checkout -b
używasz zdalnej gałęzi jako punktu początkowego, to w rzeczywistości nie jest konieczne użycie--track
.git checkout <branchname>
, i istnieje gałąź zdalna o tej samej nazwie (po wykonaniu tej czynnościgit fetch
), gałąź lokalna zostanie automatycznie skonfigurowana do śledzenia tej zdalnej.Gdy gałąź nie jest gałęzią zdalną, możesz przekazać gałąź lokalną bezpośrednio do pilota.
lub kiedy masz gałąź deweloperską
lub gdy istnieje gałąź zdalna
Istnieje kilka innych posibilitów do wypychania zdalnej gałęzi.
źródło