"Невозможно обновить пути и переключиться на ветвь одновременно"

Я иногда использую параметр 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)
  1. После проверки таких параметров, как (выбор 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.

Вы можете увидеть, что многие файлы были удалены. Вы можете запустить

  • git reset .

  • git checkout .

  • git fetch -p

  • git rm --cached submodules//suboudles - ваше имя

  • git submoudle add ....

Ответ 10

Вы можете использовать следующие команды: git remote update, git fetch, git checkout -b имя_ ветки имя-источника: имя_ ветки_

Я думаю, может быть, это из-за вашей локальной ветки не может отслеживать удаленную ветку

Ответ 11

Это обусловлено тем, что ваша локальная ветка не отслеживает удаленную ветку. Как сказал ssasi, вам нужно использовать эти команды:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

Я решил свою проблему только сейчас....