Проверка Git:обновление путей несовместимо с переключением ветвей
-
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 создавать ссылки.