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 core
Теперь вы можете увидеть все из них такой:
git branch --all
Это звучит тривиально, но моя проблема заключалась в том, что я не был в правильном проекте. Убедитесь, что вы находитесь в проекте, в котором вы ожидаете быть; в противном случае вы не сможете вытащить правильные ветви.