Która z tych linii jest poprawna?
git checkout 'another_branch'
Lub
git checkout origin 'another_branch'
Lub
git checkout origin/'another_branch'
Jaka jest różnica między tymi liniami?
git
github
version-control
gitlab
git-checkout
Benyamin Jafari
źródło
źródło
git checkout [branch]
dla większości użytkowników odwiedzających to pytanieOdpowiedzi:
Jeśli
another_branch
już istnieje lokalnie i nie ma Cię w tej gałęzi,git checkout another_branch
przełącz się na gałąź.Jeśli
another_branch
nie istnieje, ale istniejeorigin/another_branch
,git checkout another_branch
oznacza togit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. To stworzyćanother_branch
odorigin/another_branch
i zestaworigin/another_branch
jak górnym stanowiskuanother_branch
.Jeśli nie istnieje,
git checkout another_branch
zwraca błąd.git checkout origin another_branch
zwraca błąd w większości przypadków. Jeśliorigin
jest wersją ianother_branch
jest plikiem, to sprawdza plik tej wersji, ale najprawdopodobniej nie tego się spodziewasz.origin
jest stosowany głównie wgit fetch
,git pull
igit push
jako zdalny, alias adres URL do zdalnego repozytorium.git checkout origin/another_branch
powiedzie się, jeśliorigin/another_branch
istnieje. Prowadzi to do stanu odłączonego HEAD, a nie do żadnej gałęzi. Jeśli dokonasz nowych zatwierdzeń, nowe zatwierdzenia nie będą dostępne z żadnych istniejących oddziałów i żaden z oddziałów nie zostanie zaktualizowany.AKTUALIZACJA :
Wraz z wydaniem 2.23.0 możemy za jego pomocą
git switch
tworzyć i przełączać gałęzie.Jeśli
foo
istnieje, spróbuj przełączyć nafoo
:Jeśli
foo
nie istnieje iorigin/foo
istnieje, spróbuj utworzyćfoo
z,origin/foo
a następnie przejdź dofoo
:Mówiąc bardziej ogólnie, jeśli
foo
nie istnieje, spróbuj utworzyćfoo
ze znanego ref lub zatwierdzenia, a następnie przejdź dofoo
:Jeśli prowadzimy jednocześnie repozytorium w Gitlab i Github, lokalne repozytorium może mieć dwa piloty, na przykład
origin
dla Gitlab igithub
Github. W tym przypadku repozytorium maorigin/foo
igithub/foo
.git switch foo
będzie narzekaćfatal: invalid reference: foo
, ponieważ nie wiadomo z którego reforigin/foo
lubgithub/foo
, aby utworzyćfoo
. Musimy to określić za pomocągit switch -c foo origin/foo
lubgit switch -c foo github/foo
zgodnie z potrzebą. Jeśli chcemy utworzyć gałęzie z obu zdalnych gałęzi, lepiej jest użyć nazw wyróżniających dla nowych gałęzi:Jeśli
foo
istnieje, spróbuj odtworzyć / wymusić utworzeniefoo
z (lub zresetowaćfoo
do) znanego ref lub zatwierdzenia, a następnie przełącz się nafoo
:które są równoważne:
Spróbuj przełączyć się na odłączony HEAD znanego ref lub zatwierdzić:
Jeśli chcesz po prostu utworzyć gałąź, ale nie chcesz się do niej przełączać, użyj
git branch
zamiast tego. Spróbuj utworzyć gałąź ze znanego ref lub zatwierdzenia:źródło
git checkout
moim zdaniem polecenie robi zbyt wiele rzeczy. Dlatego jest tutaj tak wiele trybów działania. Gdyby jedyną rzeczągit checkout
było przełączenie gałęzi, odpowiedź byłaby prosta, ale może również tworzyć gałęzie, a nawet wyodrębniać pliki z określonych zatwierdzeń bez przełączania gałęzi.git switch
przełączenia na oddział.git checkout
tego używaj @John dla starszych wersji, która działa również w nowoczesnych wersjach.Przełączanie do innej gałęzi w git. Prosta odpowiedź,
git-checkout - Przełącz gałęzie lub przywróć działające pliki drzewa
Przed zmianą gałęzi upewnij się, że nie masz żadnych zmodyfikowanych plików, w takim przypadku możesz zatwierdzić zmiany lub ukryć je.
źródło
[
git checkout "branch_name"
]to inny sposób na powiedzenie:
[
git checkout -b branch_name origin/branch_name
]w przypadku, gdy „nazwa_gałęzi” istnieje tylko zdalnie.
[
git checkout -b branch_name origin/branch_name
] jest przydatne, jeśli masz wiele pilotów.Jeśli chodzi o [
git checkout origin 'another_branch'
] nie jestem pewien, czy jest to możliwe, AFAK można to zrobić za pomocą polecenia „pobierz” - [git fetch origin 'another_branch'
]źródło
Od wersji Git 2.23 można
git switch <branch name>
przełączać gałęzie.źródło
Dla mnie zadziałało:
źródło
Przydatne polecenia do pracy w życiu codziennym:
źródło
Jeśli chcesz, aby gałąź śledziła gałąź zdalną, co jest bardzo ważne, jeśli zamierzasz zatwierdzić zmiany w gałęzi i pobrać zmiany itp., Musisz użyć opcji -t do faktycznego pobrania, np .:
git checkout -t branchname
źródło
Sprawdź:
git branch -a
Jeśli otrzymujesz tylko jeden oddział. Następnie wykonaj poniższe czynności.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
źródło
depth
param) i teraz zastanawiasz się, dlaczego nie możesz pobrać innych zdalnych gałęzi,error: pathspec 'another_branch' did not match any file(s) known to git
korzystając z poleceń sugerowanych powyżej. Z pewnością nie o to chodziło w pierwotnym pytaniu, ale może pomóc innym drapiąc się tutaj po głowach.Używam tego, aby przełączyć jedną gałąź na drugą, każdy, kogo możesz użyć, działa dla mnie jak urok.
git switch [nazwa gałęzi] LUB git kasa [nazwa gałęzi]
np. git switch develop LUB
git checkout develop
źródło