Проверка Git:обновление путей несовместимо с переключением ветвей

StackOverflow https://stackoverflow.com/questions/945654

  •  09-09-2019
  •  | 
  •  

Вопрос

Моя проблема связана с Фатальная ошибка Git при переключении ветки.

Я пытаюсь получить удаленную ветвь с помощью команды

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

но я получаю это сообщение об ошибке:

фатальный:проверка git:обновление путей несовместимо с переключением ветвей.
Намеревались ли вы проверить 'origin / remote-name', который не может быть разрешен как commit?

Если я вручную создам ветку, а затем потяну удаленную ветку, это сработает так же, как создание нового клона и проверка ветки.

Почему это не работает в репозитории, с которым я работаю?

Это было полезно?

Решение

Я полагаю, что это происходит, когда вы пытаетесь проверить удаленную ветку, о которой ваше локальное репозиторий git еще не знает.Попробуй:

git remote show origin

Если удаленная ветвь, которую вы хотите проверить, находится в разделе "Новые удаленные ветви", а не "Отслеживаемые удаленные ветви", то вам нужно сначала получить их:

git remote update
git fetch

Теперь это должно сработать:

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

Другие советы

Альтернативный синтаксис,

git fetch origin remote_branch_name:local_branch_name

Безуспешно перепробовав большую часть того, что я смог прочитать в этой теме, я наткнулся на эту:Удаленная ветвь не отображается в "git branch -r"

Оказалось, что мой файл .git / config был неверным .После выполнения простого исправления появились все ветки.

Идя от

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

Для

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

Сделал свое дело

Не уверен, полезно ли это или точно соответствует вашему вопросу, но если вы пытаетесь получить и оформить заказ только одинокий переходите из удаленного репозитория, тогда следующие команды git сделают свое дело:

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

ничто из вышеперечисленного у меня не сработало.Моя ситуация немного иная, мой удаленный филиал находится не в происхождение.но в другом хранилище.

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

совет:если вы не видите удаленную ветвь в следующем выводе git branch -v -a нет никакого способа проверить это.

Подтверждена работа над 1.7.5.4

Для меня сработало то, что было:

git fetch

Который переносит все ссылки на ваш компьютер для всех ветвей на удаленном компьютере.Тогда я мог бы сделать

git checkout <branchname>

и это сработало идеально.Похоже на ответ, за который проголосовали лучшие, но немного проще.

Я подозреваю, что удаленной ветви с именем remote-name не существует, но вы непреднамеренно создали локальную ветвь с именем origin / remote-name .

Возможно ли, что вы в какой-то момент набрали:

git branch origin/remote-name

Таким образом, создается локальная ветвь с именем origin / remote-name?Введите эту команду:

git checkout origin/remote-name

Вы либо увидите:

Switched to branch "origin/remote-name"

что означает, что это действительно неправильно названный локальный филиал, или

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 

это означает, что это действительно удаленная ветка.

Это не очень интуитивно понятно , но у меня это хорошо работает ...

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

ЗАТЕМ запустите команду git branch --track ...

  git branch --track $BRANCH origin/$BRANCH

Что касается меня, то у меня была опечатка, и мой удаленный филиал не существовал

Использование git branch -a чтобы перечислить удаленные филиалы

Может ли ваша проблема быть связана с этим другим вопросом SO "проблема с оформлением заказа"?

т. е.:проблема, связанная с:

  • старая версия Git
  • любопытный синтаксис проверки, который должен быть: git checkout -b [<new_branch>] [<start_point>], с [<start_point>] ссылка на имя фиксации, с которой нужно запустить новую ветвь, и 'origin/remote-name' это не так.
    (принимая во внимание git branch поддерживает ли начальную точку, являющуюся именем удаленной ветви)

Примечание:что за checkout.sh сценарий говорит, что это:

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

Это похоже на синтаксис git checkout -b [] [remote_branch_name], который одновременно переименовывал ветку и сбрасывал новую начальную точку новой ветки, что считается несовместимым.

После выборки миллион раз добавленные пульты дистанционного управления все еще не появлялись, хотя большие двоичные объекты были в пуле.Оказывается, что --теги опция не должна предоставляться git remote add по какой бы то ни было причине.Вы можете вручную удалить его из .git/ config, чтобы заставить git fetch создавать ссылки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top