Git: не удается увидеть новую удаленную ветку

коллега нажал новую удаленную ветку на origin / dev / homepage, и я не вижу ее при запуске:

$ git branch -r

Я все еще вижу существующие удаленные ветви.

Я предполагаю, что это потому, что мои локальные удаленные ссылки не обновлены, поэтому, когда я запустил git pull, ничего не произошло, так как git pull только тянет текущую рабочую ветку правильно? В отличие от git push, который толкает все ветви, которые имеют изменения в соответствующей удаленной ветви?

6 ответов


во-первых, дважды проверьте, что ветка была удаленно нажата, используя команду git ls-remote origin. Если в выходных данных появится новая ветвь, попробуйте дать команду git fetch: он должен загрузить ссылки на ветви из удаленного репозитория.

если ваша удаленная ветка по-прежнему не отображается, дважды проверьте (в ls-remote output) каково имя ветви на пульте и, в частности, если оно начинается с refs/heads/. Это связано с тем, что по умолчанию значение remote.<name>.fetch есть:

+refs/heads/*:refs/remotes/origin/*

так, что только удаленные ссылки, имя которого начинается с refs/heads/ будет отображаться локально как ссылки удаленного отслеживания в разделе refs/remotes/origin/ (т. е. они станут филиалами удаленного отслеживания)


делать удаленное обновление git также обновит список ветвей, доступных из удаленного репозитория.

Если вы используете TortoiseGit, начиная с версии 1.8.3.0, вы можете сделать "git - > Sync", и в левом нижнем углу появится кнопка" удаленное обновление". Нажмите на это. Затем вы сможете сделать "git - > Switch / Checkout" и в раскрывающемся списке ветвей, которые вы можете выбрать, появится новая удаленная ветвь.


проверить, является ли .git/config содержит

[remote "origin"]
    url = …
    fetch = +refs/heads/master:refs/remotes/origin/master

если да, измените его, чтобы сказать

[remote "origin"]
    url = …
    fetch = +refs/heads/*:refs/remotes/origin/*

тогда вы должны иметь возможность использовать его:

$ git fetch
remote: Counting objects: …
remote: Compressing objects: ..
Unpacking objects: …
remote: …
From …
 * [new branch]            branchname -> origin/branchname
$ git checkout branchname
Branch branchname set up to track remote branch branchname from origin.
Switched to a new branch 'branchname'

У меня иногда возникает такая же проблема.

самый простой ответ:

git fetch origin <branch_name>


что в конечном итоге сработало для меня, так это добавить имя удаленного репозитория в , например:

git fetch core

Теперь вы можете увидеть все из них такой:

git branch --all

Это звучит тривиально, но моя проблема заключалась в том, что я не был в правильном проекте. Убедитесь, что вы находитесь в проекте, в котором вы ожидаете быть; в противном случае вы не сможете вытащить правильные ветви.