Не удается создать локальную и удаленную ветвь (отслеживание) одновременно

Из 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. Я просто знаю, что у меня была проблема с идентичным сообщением об ошибке, и решение отличалось от принятого ответа)