Git checkout: пути обновления несовместимы с коммутационными ветвями
Моя проблема связана с ошибкой Fatal Git при переключении ветки.
Я пытаюсь получить удаленную ветку с помощью команды
git checkout -b local-name origin/remote-name
но я получаю это сообщение об ошибке:
fatal: Git checkout: пути обновления несовместимы с коммутационными ветвями.
Вы намеревались проверить "origin/remote-name", которые не могут быть разрешены как commit?
Если я вручную создаю ветку, а затем вытащил удаленную ветвь, она работает так же, как создание нового клона и проверка ветки.
Почему он не работает в репозитории, с которым я работаю?
Ответы
Ответ 1
Я считаю, что это происходит, когда вы пытаетесь проверить удаленную ветвь, о которой пока не известно ваше местное репозиционирование git. Попробуйте:
git remote show origin
Если удаленная ветка, которую вы хотите проверить, находится в разделе "Новые удаленные ветки", а не "Отслеживаемые удаленные ветки", вам необходимо сначала их получить:
git remote update
git fetch
Теперь он должен работать:
git checkout -b local-name origin/remote-name
Ответ 2
Альтернативный синтаксис
git fetch origin remote_branch_name:local_branch_name
Ответ 3
После того, как я попробовал больше всего, что мог прочитать в этом потоке, я наткнулся на это:
Удаленная ветвь не отображается в "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/*
Сделал трюк
Ответ 4
Не уверен, что это полезно или точно соответствует вашему вопросу, но если вы пытаетесь получить и проверить только ветвь одиночная из удаленного репозитория, тогда будут выполняться следующие команды 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
Ответ 5
Ни одно из вышеперечисленных не работало для меня. Моя ситуация немного отличается, моя удаленная ветка не находится в происхождении. но в другом хранилище.
git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname
tip: если вы не видите удаленную ветвь в следующем выпуске git branch -v -a
, нет способа проверить это.
Подтверждена работа над 1.7.5.4
Ответ 6
Для меня работала:
git fetch
Который вытаскивает все ссылки на вашу машину для всех ветвей на пульте дистанционного управления. Тогда я мог бы сделать
git checkout <branchname>
и это сработало отлично. Похоже на верхний проголосовавший ответ, но немного более простой.
Ответ 7
Я подозреваю, что нет удаленной ветки с именем 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
что означает, что он действительно является удаленной ветвью.
Ответ 8
Это не очень интуитивно, но это хорошо работает для меня...
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
Ответ 9
Может ли ваша проблема быть связана с этим другим вопросом SO "проблема с проверкой" ?
i.e.: проблема, связанная с:
- старая версия Git
- любопытный синтаксис проверки, который должен быть:
git checkout -b [<new_branch>] [<start_point>]
, с [<start_point>]
, ссылаясь на имя коммита, на котором запускается новая ветка, а 'origin/remote-name'
- нет.
(тогда как git branch
поддерживает start_point как имя удаленной ветки)
Примечание: что checkout.sh script говорит:
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], как переименование ветки, так и сброс новой начальной точки новой ветки, которая считается несовместимой.
Ответ 10
После извлечения миллион раз все еще добавленные пульты не отображались, хотя капли были в пуле. Оказывается, опция - теги не должна указываться git remote add
по какой-либо причине. Вы можете вручную удалить его из .git/config, чтобы сделать git fetch создать refs.