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


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

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

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

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

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

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

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

11 452

11 ответов:

Я считаю, что это происходит, когда вы пытаетесь проверить удаленную ветку, о которой ваше локальное РЕПО 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/*

получилось

Не уверен, что это полезно или точно относится к вашему вопросу, но если вы пытаетесь получить и проверить только 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] как переименование ветви, так и сброс новой начальной точки новой ветви, которая считается несовместимой.

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

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

использовать git branch -a список удаленных филиалов