Не удается создать локальную и удаленную ветвь (отслеживание) одновременно
Из Pro Git:
вы можете настроить другие ветки отслеживания, если хотите - те, которые не используются отслеживать ветки по происхождению и не отслеживать основную ветвь. Простой case - это пример, который вы только что видели, запуск git checkout -b [branch] [remotename]/[branch]
$git checkout --track origin/serverfix Фильтрация сервера сервера, установленная для отслеживать удаленные ветки refs/remotes/origin/serverfix. Переключился на новый branch "serverfix"
$git checkout -b sf origin/serverfix Ветвь sf настроена для отслеживания удаленный филиал refs/remotes/origin/serverfix. Переключился на новый ветвь "sf"
Я понимаю, что это способ создать локальную ветвь и восходящую ветвь.
Но когда я это делаю:
git checkout -b iss53 origin/iss53
Я получаю:
fatal: Cannot update paths and switch to branch 'iss53' at the same time.
И когда я это сделаю:
git checkout --track origin/iss53
Я получаю:
fatal: невозможно обновить пути и переключиться на ветку 'iss53' при этом время. Вы намерены проверить "origin/iss53", который не может быть разрешено как commit?
Почему?
Ответы
Ответ 1
Cannot update paths and switch to branch
Как я упоминал в "Получить новую ветвь вверх по течению с git", вы можете попробовать:
# let create a new local branch first
git checkout -b iss53
# then reset its starting point
git reset --hard origin/iss53
Убедитесь, что ветвь удаленного отслеживания origin/iss53
существует сначала (после git fetch origin
)
origin/iss53
означает, что iss53
в восходящем удаленном репо, на который ссылается origin
.
Если такой ветки не было, тогда вы создаете локальную ветвь iss53
и нажимаете ее так:
git push -u origin iss53
Это установит связь между локальной ветвью iss53
и веткой удаленного отслеживания origin/iss53
(отслеживание вновь созданной ветки iss53
на origin
, созданной нажатием).
См. "Почему мне нужно явно нажать новую ветку?" для получения дополнительной информации об этом первоначальном нажатии.
Ответ 2
Похоже, вы еще не взяли это сообщение. Итак, сначала выполните:
git fetch origin
И затем:
git checkout --track origin/iss53
Ответ 3
FWIW для других людей с тем же сообщением об ошибке: когда это случилось со мной, основной проблемой было то, что я пытался создать ветку с пробелами в имени. Для набора предварительно настроенных команд GIT у меня были проблемы с ветками с пробелами.
(ObDisclaimer: я очень, очень далек от эксперта git. Я просто знаю, что у меня была проблема с идентичным сообщением об ошибке, и решение отличалось от принятого ответа)