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

Git: не видно новой удаленной ветки

Коллега нажал новую удаленную ветвь на начало /dev/homepage, и я не могу ее увидеть, когда я запустил:

$ git branch -r

Я все еще вижу предыдущие удаленные ветки.

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

Проверьте, содержит ли .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'

Ответ 4

Наконец-то мне удалось добавить имя удаленного репозитория в команду git fetch, например:

git fetch core

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

git branch --all

Ответ 5

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