Git checkout: aktualizacja ścieżek jest niezgodna z przełączaniem gałęzi

Mój problem jest związany z Fatal Git error podczas przełączania gałęzi.

Próbuję pobrać zdalną gałąź za pomocą polecenia

git checkout -b local-name origin/remote-name

Ale dostaję komunikat o błędzie:

Fatal: Git checkout: aktualizacja ścieżek jest niezgodna z przełączaniem gałęzi.
Czy zamierzałeś sprawdzić 'origin/remote-name', którego nie można rozwiązać jako commit?

Jeśli ręcznie utworzyć gałąź, a następnie wyciągnąć gałąź zdalną, to działa, tak jak tworzenie nowego klona i sprawdzam gałąź.

Dlaczego nie działa na repozytorium, z którym pracuję?

Author: Community, 2009-06-03

11 answers

Wydaje mi się, że dzieje się tak, gdy próbujesz wymeldować zdalną gałąź, o której lokalny repo git jeszcze nie wie. Try:

git remote show origin

Jeśli zdalna gałąź, którą chcesz zamówić, znajduje się w sekcji "Nowe zdalne gałęzie", a nie "śledzone zdalne gałęzie", musisz je najpierw pobrać:

git remote update
git fetch

Teraz powinno działać:

git checkout -b local-name origin/remote-name
 729
Author: user167628,
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-02-14 21:02:52

Składnia Alternatywna,

git fetch origin remote_branch_name:local_branch_name
 148
Author: Rare Pleasures,
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
2011-01-29 09:26:56

Po wypróbowaniu większości z tego, co mogłem przeczytać w tym wątku bez powodzenia, natknąłem się na ten: Zdalna gałąź nie pojawia się w "GIT branch-R"

Okazało się, że mój .plik git/config był nieprawidłowy. Po wykonaniu prostej poprawki pojawiły się wszystkie gałęzie.

Od

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

Do

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Did the trick

 42
Author: PålOliver,
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:43

Nie jestem pewien, czy jest to pomocne, czy dokładnie istotne dla Twojego pytania, ale jeśli próbujesz pobrać i pobrać tylko jedną gałąź ze zdalnego repozytorium, to następujące polecenia Gita wykonają ten trik:

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch
 12
Author: VirtualStaticVoid,
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
2011-02-23 20:42:26

Żadne z powyższych nie zadziałało. Moja sytuacja jest nieco inna, moja odległa gałąź nie znajduje się w origin . ale w innym repozytorium.

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

Wskazówka: Jeśli nie widzisz zdalnej gałęzi w następującym wyjściu git branch -v -a, nie ma możliwości jej sprawdzenia.

Potwierdzona praca na 1.7.5.4

 11
Author: Olivier Refalo,
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
2011-07-11 20:33:32

Dla mnie to co działało to:

git fetch

Który ściąga wszystkie refy do twojej maszyny dla wszystkich gałęzi na pilocie. Then I could do

git checkout <branchname>
I to zadziałało idealnie. Podobne do top głosował odpowiedź, ale trochę bardziej proste.
 7
Author: Matt,
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
2012-04-26 20:38:28

Podejrzewam, że nie istnieje żadna zdalna gałąź o nazwie remote-name, ale że przypadkowo stworzyłeś lokalną gałąź o nazwie origin / remote-name.

Czy to możliwe, że w pewnym momencie wpisałeś:

git branch origin/remote-name

Tworząc w ten sposób lokalną gałąź o nazwie origin / remote-name? Wpisz to polecenie:

git checkout origin/remote-name

Zobaczysz:

Switched to branch "origin/remote-name"

Co oznacza, że to naprawdę źle nazwana lokalna gałąź, lub

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b 
Co oznacza, że to naprawdę odległa gałąź.
 4
Author: Don Branson,
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
2011-01-22 14:43:47

To nie jest zbyt intuicyjne, ale to działa dobrze dla mnie ...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

Następnie uruchom polecenie git branch --track ...

  git branch --track $BRANCH origin/$BRANCH
 3
Author: Eddie B,
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
2011-09-19 00:34:59

Czy twój problem może być powiązany z tym drugim pytaniem "problem z kasą"?

Czyli problem związany z:

  • stara wersja Git
  • ciekawa składnia checkout, która powinna brzmieć: git checkout -b [<new_branch>] [<start_point>], z [<start_point>] odnoszącym się do nazwy commita, przy którym należy uruchomić nową gałąź, a 'origin/remote-name' to nie to.
    (a także git branch obsługuje punkt startowy będący nazwą zdalnej gałęzi)

Uwaga: co do checkout.sh skrypt mówi jest:

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

Wygląda to tak, jakby składnia Git checkout-b [] [remote_branch_name] zmieniała zarówno nazwę gałęzi, jak i resetowała nowy punkt początkowy nowej gałęzi, co jest uważane za niezgodne.

 1
Author: VonC,
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:18:23

Po pobraniu z milion razy nadal dodane piloty nie pojawiły się, chociaż plamy były w basenie. Okazuje się, że opcja --tags nie powinna być podawana git remote add z jakiegokolwiek powodu. Można ręcznie usunąć go z.git / config aby Git fetch stworzył refs.

 1
Author: eMPee584,
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
2012-05-29 16:23:32

Dla mnie miałem literówkę i moja zdalna gałąź nie istniała

Użyj git branch -a, aby wyświetlić listę zdalnych gałęzi

 1
Author: Thomas,
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-12-08 15:53:03