"Невозможно обновить пути и переключиться на ветвь одновременно"
Я иногда использую параметр checkout -b
для создания новой ветки, одновременно проверяю ее и настраиваю отслеживание по одной команде.
В новой среде я получаю эту ошибку:
$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?
Почему Git не нравится? Это использовалось для работы с одним и тем же репо.
Ответы
Ответ 1
'origin/master
', который не может быть разрешен как commit
Странно: вам нужно проверить свои пульты:
git remote -v
И убедитесь, что origin
извлечен:
git fetch origin
Тогда:
git branch -avv
(чтобы убедиться, что вы выбрали ветвь origin/master
)
Ответ 2
FWIW: Если у вас есть опечатка в вашем бране, вы получите ту же ошибку.
Ответ 3
Вы можете получить эту ошибку в контексте, например. сборку Travis, которая по умолчанию проверяет код с помощью git clone --depth=50 --branch=master
. Насколько мне известно, вы можете управлять --depth
с помощью .travis.yml
, но не --branch
. Поскольку это приводит к тому, что только удаленная ветвь отслеживает только одну ветвь, вам необходимо самостоятельно обновить удаленный компьютер для отслеживания желаемых удаленных ссылок.
До:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Исправление:
$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch
После:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master
Ответ 4
Эта простая вещь работала для меня!
Если он говорит, что не может делать 2 вещи одновременно, отделите их.
git branch branch_name origin/branch_name
git checkout branch_name
Ответ 5
Вы можете выполнить следующие действия, если вы наткнетесь на эту проблему:
- Выполните следующую команду, чтобы отобразить ветки, известные вашему локальному репозиторию.
git источник удаленной передачи
который выводит это:
remote origin
Fetch URL: <your_git_path>
Push URL: <your_git_path>
HEAD branch: development
Remote branches:
development tracked
Feature2 tracked
master tracked
refs/remotes/origin/Feature1 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
Feature2 merges with remote Feature2
development merges with remote development
master merges with remote master
Local refs configured for 'git push':
Feature2 pushes to Feature2 (up to date)
development pushes to development (up to date)
master pushes to master (local out of date)
- После проверки таких параметров, как (выбор URL-адреса и т.д.), запустите эту команду, чтобы получить новую ветку (т.е. вы можете проверить в локальном репо), которые существуют на удаленном компьютере, но не в вашем локальном.
» git remote update
Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
* [new branch] Feature3 -> Feature3
Как вы видите, новая ветка была извлечена с удаленного устройства.
3. Наконец, проверьте ветвь с помощью этой команды
» git checkout -b Feature3 origin/Feature3
Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'
Нет необходимости явно указывать Git отслеживать (используя - трек) ветку с удаленным.
Приведенная выше команда установит локальную ветвь для отслеживания удаленной ветки с начала.
Ответ 6
Если у вас есть пустое пространство в вашей ветки, то вы получите эту ошибку.
Ответ 7
Мне нужно было добавить пульт:
git remote -add myRemoteName('origin' in your case) remoteGitURL
то я мог бы получить
git fetch myRemoteName
Ответ 8
Сначала вам нужно Fetch
удаленный (конкретная ветвь), затем вы можете создать локальный br и отследить его с помощью этой удаленной ветки с помощью вашей команды (т.е. checkout
с -b и --track).
Ответ 9
Вы должны пойти в подмодуль и запустить git status
.
Вы можете увидеть, что многие файлы были удалены. Вы можете запустить
Ответ 10
Вы можете использовать следующие команды: git remote update, git fetch, git checkout -b имя_ ветки имя-источника: имя_ ветки_
Я думаю, может быть, это из-за вашей локальной ветки не может отслеживать удаленную ветку
Ответ 11
Это обусловлено тем, что ваша локальная ветка не отслеживает удаленную ветку. Как сказал ssasi, вам нужно использовать эти команды:
git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB
Я решил свою проблему только сейчас....