Git checkout: обновление путей несовместимо с переключением ветвей
моя проблема связана с фатальной ошибкой Git при переключении ветки.
Я пытаюсь получить удаленную ветку с помощью команды
git checkout -b local-name origin/remote-name
но я получаю это сообщение об ошибке:
fatal: git checkout: обновление путей несовместимо с переключением ветвей.
Вы намеревались проверить "origin / remote-name", который не может быть разрешен как commit?
если я вручную создам ветку, а затем вытащу удаленную ветку, она работает, так же, как создание нового клона и проверка ветви.
почему он не работает в репозитории, с которым я работаю?
11 ответов:
Я считаю, что это происходит, когда вы пытаетесь проверить удаленную ветку, о которой ваше локальное РЕПО git еще не знает. Попробуйте:
git remote show origin
Если удаленная ветвь, которую вы хотите проверить, находится в разделе "новые удаленные ветви", а не" отслеживаемые удаленные ветви", вам нужно сначала их извлечь:
git remote update git fetch
Теперь он должен работать:
git checkout -b local-name origin/remote-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/*
получилось
Не уверен, что это полезно или точно относится к вашему вопросу, но если вы пытаетесь получить и проверить только a один ветку из удаленного репозитория, то следующие команды 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
может ли ваша проблема быть связана с этим другим вопросом SO "проблемы кассе"?
т. е.: проблема, связанная с:
- старая версия Git
- любопытный синтаксис проверки, который должен быть:
git checkout -b [<new_branch>] [<start_point>]
С[<start_point>]
ссылаясь на имя фиксации, с которой начинается новая ветвь, и'origin/remote-name'
- это не так.
(тогда какgit branch
поддерживает ли start_point имя удаленного ветка)примечание: что за 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] как переименование ветви, так и сброс новой начальной точки новой ветви, которая считается несовместимой.