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



Я иногда использую 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 это не нравится? Раньше это работало с одним и тем же РЕПО.

992   10  

10 ответов:

'origin/master ' который не может быть разрешен как commit

странно: вам нужно проверить ваши пульты дистанционного управления:

git remote -v

и убедится origin получается:

git fetch origin

затем:

git branch -avv

(чтобы увидеть, если вы выбрали origin/master - филиал)

FWIW: если у вас есть опечатка в вашем имени ветви вы получите эту же ошибку.

вы можете получить эту ошибку в контексте, например, сборки 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

эта простая вещь работала для меня!

если он говорит, что не может делать 2 вещи одновременно, разделить их.

git branch branch_name origin/branch_name 

git checkout branch_name

вы можете выполнить следующие действия, когда вы наткнетесь на эту проблему:

  1. выполните следующую команду, чтобы вывести список ветвей, известных для вашего локального репозитория.

git remote Show origin

который выводит это:

 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. после проверки деталей, таких как (fetch 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 для отслеживания(используя -- track) филиала с пультом дистанционного управления.

приведенная выше команда установит локальную ветвь для отслеживания удаленной ветви от источника.

для меня мне нужно было добавить пульт:

git remote -add myRemoteName('origin' in your case) remoteGitURL

тогда я мог бы получить

git fetch myRemoteName

сначала нужно Fetch удаленный (конкретная ветвь), затем вы можете создать локальный br и отслеживать его с помощью этой удаленной ветви с помощью вашей команды (т. е. checkout С -b и --track).

вы должны пойти в подмодуль dir и запустить git status.

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

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules //submoudles-это ваше имя

  5. git submoudle add ....

вы можете использовать эти команды: удаленное обновление git, ГИТ выборки, git checkout - b branch_nameA происхождение: branch_nameB

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

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

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

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

Comments

    Ничего не найдено.