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.

[[7]}teraz próbuję sprawdzić gałąź zdalnego 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?

Author: Peter Mortensen, 2009-11-23

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
 7594
Author: hallski,
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
 1108
Author: Jakub Narębski,
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.

 487
Author: ndim,
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.

 407
Author: Corey Ballou,
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łąź.

 187
Author: Sahil kalra,
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.

 101
Author: tacaswell,
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.

 91
Author: matanster,
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:

git fetch

 53
Author: Alireza,
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.

Dokumentacja

 46
Author: Madhan Ayyasamy,
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
 29
Author: uma,
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.

 27
Author: Mohideen ibn Mohammed,
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

 24
Author: sreekumar,
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
 23
Author: priyankvex,
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
 22
Author: Kris,
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

 15
Author: Inder Kumar Rathore,
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.

 14
Author: webdevguy,
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

 10
Author: brianyang,
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
 9
Author: Thushan,
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,

  1. Git na początku wygląda na xxx jako gałąź, ale nie ma żadnej gałęzi o nazwie test.
  2. wtedy Git myśli, że xxx jest ścieżką i na szczęście (lub niestety) istnieje plik o nazwie test. Więc git checkout xxx oznacza odrzucenie wszelkich modyfikacji w pliku xxx.
  3. 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 nazwie xxx Jeśli remotes/origin/xxx istnieje.
 7
Author: oldman,
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 ;
 6
Author: OzzyCzech,
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'
 3
Author: Mehedi Hasan,
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
 3
Author: Hasib Kamal,
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 
 2
Author: Pranav,
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.

 0
Author: Eugene Yarmash,
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