Git:无法看到新的远程分支
一个同事推动了一个新的远程分支到/ dev / homepage,我运行时看不到:
$ git branch -r
我仍然看到先前存在的远程分支机构。
我假设这是因为我的本地远程参考不是最新的,因此当我跑git拉什么都没有发生,因为git拉只拉当前工作分支正确? 不同于推动所有有相应远程分支变化的分支的git push?
首先,使用命令git ls-remote origin
,仔细检查分支是否已经被远程推送。 如果新分支出现在输出中,请尝试执行命令git fetch
:它应该从远程存储库下载分支引用。
如果您的远程分支仍然没有出现,请仔细检查(在ls-remote
输出中) ls-remote
分支名称是什么,具体来说,如果它以refs/heads/
开头。 这是因为,默认情况下, remote.<name>.fetch
是:
+refs/heads/*:refs/remotes/origin/*
这样只有以refs/heads/
开头的远程引用才会被本地映射为refs/remotes/origin/
下的远程跟踪引用(即它们将成为远程跟踪分支)
做一个git远程更新也将更新从远程仓库可用分支的列表。
如果您使用的是TortoiseGit,从版本1.8.3.0开始,您可以执行“Git – > Sync”,在出现的窗口左下方会出现一个“Remote Update”button。 点击。 那么你应该可以做“Git – > Switch / Checkout”,并且新的远程分支出现在你可以select的分支的下拉列表中。
检查.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
命令,如下所示:
git fetch core
现在你可以看到所有这些:
git branch --all
这听起来微不足道,但我的问题是,我没有在正确的项目。 确保你在项目中,你期望在; 否则,你将无法拉下正确的分支。