Подтвердить что ты не робот

Невозможно использовать git pull "Не удалось найти удаленный ref xxx"

У меня возникла проблема с git pull.

Во-первых, я нахожусь в ветке "test_http_1204" ,

[email protected]:~/bosh# git branch
              master
            * test_http_1204
              ubuntu1204

Затем я использую git pull и получил сообщение об ошибке,

 [email protected]:~/bosh# git pull m109bosh test_http_1204
    fatal: Couldn't find remote ref test_http_1204
    Unexpected end of command stream

Но я могу найти ветку "test_http_1204" в моем удаленном репо "m109bosh",

[email protected]:~/bosh# git branch -a
  master
* test_http_1204
  ubuntu1204
  remotes/m109bosh/master
  remotes/m109bosh/patch-1
  remotes/m109bosh/test_http_1204
  remotes/m109bosh/ubuntu1204
  remotes/origin/HEAD -> origin/master
  remotes/origin/floating_dns_registry
  remotes/origin/http_stemcell_uploader
  remotes/origin/master
  remotes/origin/squashed
  remotes/origin/ubuntu1204
  remotes/origin/upstream

И содержимое ниже .git/config показано ниже:

  [email protected]:~/bosh# cat .git/config 
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
    [remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://github.com/cloudfoundry-community/bosh-cloudstack-cpi.git
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    [branch "ubuntu1204"]
        remote = origin
        merge = refs/heads/ubuntu1204
    [remote "m109bosh"]
        url = https://github.com/m1093782566/bosh-cloudstack-cpi.git
        fetch = +refs/heads/*:refs/remotes/m109bosh/*
        url = https://github.com/m1093782566/bosh.git

Я полагаю, что основной причиной может быть отсутствие [branch "test_http_1204" ] в .git/config, но когда я добавляю эти строки в .git/config вручную, он все равно не работает.

[branch "test_http_1204"]
        remote = m109bosh
        merge = refs/heads/test_http_1204

Я понятия не имею об этом. Не могли бы вы рассказать мне, как это исправить? Спасибо!

4b9b3361

Ответ 1

Основанный на выходе git ls-remote (был в комментарии, теперь ушел - в комментариях он не очень хорошо вписывается), похоже, что удаленный носитель имеет ветвь с именем test_http_1024, но больше не делает.

Другими словами, кто-то, кто управляет удаленным, сделал git branch -d (или что-то подобное), чтобы удалить свою ветвь test_http_1024. Это означает, что когда вы запрашиваете git pull для содержимого этой ветки, все, что он может сказать вам, это: "а? Какая? Какая ветка?": -)

Когда вы смотрите на свой собственный набор удаленных ветвей, вы можете видеть, что они имели ветку test_http_1024 (которую ваш git скопировал на remotes/m109bosh/test_http_1204, когда он существовал). Но они могут добавлять или удалять ветки, когда захотят.

Если вы запустите git fetch -p m109bosh или git remote update --prune m109bosh, ваш собственный git удалит свою (старую, устаревшую) копию своей ветки test_http_1024. (Возможно, вы не захотите это сделать, если вы все еще используете его для чего-то.)


Возможно, более важная проблема заключается в том, что:

[remote "m109bosh"]
    url = https://github.com/m1093782566/bosh-cloudstack-cpi.git
    fetch = +refs/heads/*:refs/remotes/m109bosh/*
    url = https://github.com/m1093782566/bosh.git

существуют две разные строки url =. Предположительно, один из них устарел. (git fetch использует первую, поэтому, возможно, вторая - та, которую вы хотите.)