Jak sprawdzić zdalną gałąź Git?
Ktoś wypchnął gałąź o nazwie test
z git push origin test
do współdzielonego repozytorium. Widzę gałąź git branch -r
.
test
.
Próbowałem:
-
git checkout test
co nie robi nic git checkout origin/test
daje* (no branch)
. Co jest mylące. Jak Mogę być na "bez gałęzi"?
Jak sprawdzić zdalną gałąź Git?
24 answers
Update
Odpowiedź Jakuba faktycznie się poprawia. W wersji Git ≥ 1.6.6, możesz po prostu zrobić:
git fetch
git checkout test
(Użytkownik masukomi zaznacza poniżej, że git checkout test
nie będzie działać w nowoczesnym git, jeśli masz kilka pilotów. W tym przypadku użyj git checkout -b test <name of remote>/test
).
Stara ODPOWIEDŹ
Zanim zaczniesz pracować lokalnie na zdalnej gałęzi, musisz pobrać ją w sposób opisany w odpowiedziach poniżej.
Aby pobrać gałąź, wystarczy:
git fetch origin
To przyniesie wszystkie odległe gałęzie dla Ciebie. Możesz zobaczyć oddziały dostępne do kasy z:
git branch -v -a
Mając zdalne gałęzie w ręku, musisz teraz sprawdzić gałąź, którą jesteś zainteresowany, dając Ci lokalną kopię roboczą:
git checkout -b test origin/test
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-05-23 12:10:45
Sidenote: z nowoczesnym Git (>= 1.6.6), możesz używać tylko
git checkout test
(zauważ, że jest to 'test' a nie 'origin/test'), aby wykonać magiczne DWIM -mery i utworzyć lokalną gałąź 'test' dla ciebie, dla której upstream byłby zdalnie śledzącą gałęzią 'origin/test'.
Wyjście * (no branch)
w git branch
oznacza, że znajdujesz się na nienazwanej gałęzi, w tzw. stanie "odłączonej głowy" (HEAD wskazuje bezpośrednio na commit, a nie jest symbolicznym odniesieniem do niektórych oddział lokalny). Jeśli wprowadziłeś zmiany w tej nienazwanej gałęzi, zawsze możesz utworzyć lokalną gałąź poza bieżącym zatwierdzeniem:
git checkout -b test HEAD
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 19:45:54
W tym przypadku prawdopodobnie chcesz utworzyć lokalną gałąź test
, która śledzi zdalną gałąź test
:
$ git branch test origin/test
We wcześniejszych wersjach git
, potrzebowałeś jawnej opcji --track
, ale jest to domyślne teraz, gdy rozgałęziasz się od zdalnej gałęzi.
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-02-24 09:06:49
Akceptowana odpowiedź nie działa dla Ciebie?
Podczas gdy pierwsza i wybrana odpowiedź jest technicznie poprawna , istnieje możliwość, że nie odzyskałeś jeszcze wszystkich obiektów i refów ze zdalnego repozytorium. Jeśli tak jest, otrzymasz następujący błąd:
$ git checkout -b remote_branch origin/remote_branch
Fatal: Git checkout: aktualizacja ścieżek jest niezgodna z przełączaniem gałęzi.
Czy zamierzałeś sprawdzić 'origin/remote_branch', który nie może być rozwiązany jako zaangażować?
Rozwiązanie
Jeśli otrzymasz tę wiadomość, musisz najpierw wykonać git fetch origin
Gdzie origin
jest nazwą zdalnego repozytorium przed uruchomieniem git checkout remote_branch
. Oto pełny przykład z odpowiedziami:
$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
e6ef1e0..5029161 develop -> origin/develop
* [new branch] demo -> origin/demo
d80f8d7..359eab0 master -> origin/master
$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'
Jak widzisz, uruchamiając git fetch origin
odzyskaliśmy wszystkie zdalne gałęzie, których nie byliśmy jeszcze skonfigurowani do śledzenia na naszej lokalnej maszynie. Stamtąd, ponieważ mamy teraz ref do zdalnej gałęzi, możemy po prostu uruchomić git checkout remote_branch
i zyskamy korzyści z zdalnego śledzenia.
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-05-23 12:26:35
Wypróbowałem powyższe rozwiązanie, ale nie zadziałało. Spróbuj tego, działa:
git fetch origin 'remote_branch':'local_branch_name'
Pobierze zdalną gałąź i utworzy nową lokalną gałąź (jeśli jeszcze nie istnieje) o nazwie local_branch_name
i wyśledzi w niej zdalną gałąź.
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-05-04 01:45:53
To będzie DWIM dla zdalnego nie nazwanego pochodzenia ( dokumentacja):
$ git checkout -t remote_name/remote_branch
Aby dodać nowy pilot, musisz najpierw wykonać następujące czynności:
$ git remote add remote_name location_of_remote
$ git fetch remote_name
Pierwszy mówi Gitowi, że zdalny istnieje, drugi pobiera commity.
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-07-13 23:09:32
Użycie:
git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>
Inne odpowiedzi nie działają z nowoczesnym Gitem w moim łagodnym przypadku. Może trzeba najpierw wyciągnąć, jeśli zdalna gałąź jest nowa, ale nie sprawdziłem tej sprawy.
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-06-30 16:09:02
OK , odpowiedź jest prosta... W zasadzie widzisz gałąź, ale nie masz jeszcze lokalnej kopii!...
Musisz fetch
Oddział...
Możesz po prostu pobrać, a następnie dokonać płatności do gałęzi, użyj poniższego polecenia z jednej linii:
git fetch && git checkout test
Stworzyłem również poniższy obrazek, aby podzielić się różnicami, zobacz jak działa fetch
, a także jak różni się od pull
:
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-08-23 13:30:02
Aby sklonować repozytorium Git, wykonaj:
git clone <either ssh url /http url>
Powyższe polecenie sprawdza wszystkie gałęzie, ale tylko gałąź master
zostanie zainicjowana. Jeśli chcesz sprawdzić pozostałe oddziały, wykonaj:
git checkout -t origin/future_branch (for example)
To polecenie sprawdza zdalną gałąź, a Twoja lokalna gałąź będzie taka sama jak zdalna gałąź.
Jeśli chcesz nadpisać nazwę lokalnego oddziału przy kasie:
git checkout -t -b enhancement origin/future_branch
Teraz Twoja lokalna gałąź to enhancement
, ale twoja odległa gałąź to future_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
2014-07-13 23:11:32
Możesz spróbować
git fetch remote
git checkout --track -b local_branch_name origin/branch_name
Lub
git fetch
git checkout -b local_branch_name origin/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
2014-07-13 23:13:33
Najpierw musisz zrobić:
git fetch
# Jeśli nie wiesz o nazwie gałęzi
git fetch origin branch_name
Po drugie, możesz sprawdzić zdalną gałąź w swoim lokalnym przez:
git checkout -b branch_name origin/branch_name
-b
utworzy nową gałąź o podanej nazwie z wybranej gałęzi zdalnej.
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-05-21 11:18:05
Polecenia
git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>
Są równe
git fetch --all
A następnie
git checkout -b fixes_for_dev origin/development
Oba utworzą latest fixes_for_dev
z development
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-04-21 21:58:15
Używam następującego polecenia:
git checkout --track origin/other_remote_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
2018-03-21 18:36:52
Jeśli gałąź jest na czymś innym niż origin
pilotem, Lubię wykonać następujące czynności:
$ git fetch
$ git checkout -b second/next upstream/next
Spowoduje to wysłanie next
gałęzi na zdalnym zdalnym do lokalnej gałęzi o nazwie second/next
. Co oznacza, że jeśli masz już lokalną gałąź o nazwie next, nie będzie to sprzeczne.
$ git branch -a
* second/next
remotes/origin/next
remotes/upstream/next
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
2013-05-30 05:54:57
git fetch && git checkout your-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
2014-03-26 07:00:14
git branch -r
mówi, że nazwa obiektu jest nieprawidłowa, ponieważ nazwa tej gałęzi nie znajduje się na lokalnej liście gałęzi Gita. Zaktualizuj swoją lokalną listę gałęzi z origin za pomocą:
git remote update
I spróbuj ponownie sprawdzić zdalną gałąź.
To mi pomogło.Wierzę, że git fetch
ściągawszystkie odległe gałęzie, co nie jest tym, czego chciał oryginalny plakat.
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-07-13 23:12:49
Żadna z tych odpowiedzi nie zadziałała. to działało:
git checkout -b feature/branch remotes/origin/feature/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
2018-07-10 02:11:25
Polecenie git remote show <origin name>
wyświetli listę wszystkich gałęzi (w tym gałęzi nie śledzonych). Następnie możesz znaleźć nazwę zdalnej gałęzi, którą chcesz pobrać.
Przykład:
$ git remote show origin
Użyj tych kroków, aby pobrać zdalne gałęzie:
git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)
Przykład:
$ git fetch origin test:test
$ git checkout test
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-03-21 18:34:56
Inni faceci i dziewczyny dają rozwiązania, ale może powiem ci dlaczego.
Git checkout test który nic nie robi
Does nothing
nie równa doesn't work
, więc domyślam się, że po wpisaniu 'Git checkout test' w terminalu i naciśnięciu klawisza enter, nie pojawia się żaden komunikat i nie pojawia się żaden błąd. Mam rację?
Jeśli odpowiedź brzmi "tak", mogę podać przyczynę.
Przyczyną jest to, że w twoim drzewie roboczym znajduje się plik (lub folder) o nazwie 'test'.
Kiedy git checkout xxx
parsed,
- Git na początku wygląda na
xxx
jako gałąź, ale nie ma żadnej gałęzi o nazwie test. - wtedy Git myśli, że
xxx
jest ścieżką i na szczęście (lub niestety) istnieje plik o nazwie test. Więcgit checkout xxx
oznacza odrzucenie wszelkich modyfikacji w plikuxxx
. - jeśli nie ma pliku o nazwie
xxx
, to Git spróbuje utworzyćxxx
zgodnie z pewnymi zasadami. Jedną z reguł jest utworzenie gałęzi o nazwiexxx
Jeśliremotes/origin/xxx
istnieje.
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-03-21 18:39:53
Możesz rozpocząć śledzenie wszystkich zdalnych gałęzi za pomocą następującego skryptu Bash:
#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
do git branch -f --track "$branch" "origin/$branch"
done
Tutaj jest również wersja jednowierszowa:
git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;
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-03-21 18:37:49
Postępuj zgodnie z poleceniem, aby utworzyć pusty folder. Wprowadź To i użyj tego polecenia:
saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
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-06-30 16:09:52
Aby uzyskać nowo utworzone oddziały
git fetch
Aby przejść do innej gałęzi
git checkout BranchName
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-07 03:59:41
Pobierz origin i sprawdź gałąź.
git fetch origin && git checkout 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
2018-05-21 12:57:49
Po prostu uruchom git checkout
z nazwą zdalnej gałęzi. Git automatycznie utworzy lokalną gałąź, która śledzi zdalną:
git fetch
git checkout test
Jednakże, jeśli nazwa gałęzi zostanie znaleziona w więcej niż jednym zdalnym, to nie będzie działać, ponieważ Git nie wie, którego użyć. W takim przypadku możesz użyć albo:
git checkout --track origin/test
Lub
git checkout -b test origin/test
W 2.19, Git nauczył się checkout.defaultRemote
konfigurację, która określa zdalny na domyślny przy rozwiązywaniu takiej niejednoznacznoś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
2018-09-13 12:21:19