Git:无法看到新的远程分支

Git:无法看到新的远程分支,git,remote-branch,Git,Remote Branch,一位同事将一个新的远程分支推送到origin/dev/homepage,我运行时无法看到它: $ git branch -r 我仍然看到以前存在的远程分支 我假设这是因为我的本地远程引用不是最新的,因此当我运行git pull时,没有发生任何事情,因为git pull只在当前工作分支上进行拉取,对吗?与git push不同,git push将所有发生更改的分支推送到相应的远程分支?首先,使用命令git ls remote origin仔细检查分支是否已被远程推送到。如果新分支出现在输出中,请尝

一位同事将一个新的远程分支推送到origin/dev/homepage,我运行时无法看到它:

$ git branch -r
我仍然看到以前存在的远程分支


我假设这是因为我的本地远程引用不是最新的,因此当我运行git pull时,没有发生任何事情,因为git pull只在当前工作分支上进行拉取,对吗?与git push不同,git push将所有发生更改的分支推送到相应的远程分支?

首先,使用命令git ls remote origin仔细检查分支是否已被远程推送到。如果新分支出现在输出中,请尝试发出命令
git fetch
:它应该从远程存储库下载分支引用

如果您的远程分支仍然没有出现,请(在
ls remote
输出中)再次检查远程分支上的分支名称,特别是它是否以
refs/heads/
开头。这是因为默认情况下,
remote..fetch
的值为:

+refs/heads/*:refs/remotes/origin/*
因此,只有名称以
refs/heads/
开头的远程引用才会在本地映射为
refs/remotes/origin/
下的远程跟踪引用(即,它们将成为远程跟踪分支)

执行git远程更新也会更新远程存储库中可用的分支列表


如果您使用的是Ortoisegit,从1.8.3.0版开始,您可以执行“Git->Sync”,并且在出现的窗口左下角将有一个“远程更新”按钮。点击那个。然后您应该能够执行“Git->Switch/Checkout”,并在您可以选择的分支下拉列表中显示新的远程分支。

最终对我起作用的是将远程存储库名称添加到
Git fetch
命令中,如下所示:

git fetch core
git branch --all
现在,您可以看到所有这些都是这样的:

git fetch core
git branch --all

检查
.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

我使用暴力删除了遥控器,然后添加了它

git remote rm <remote>
git remote add <url or ssh>
git远程rm
git远程添加

您可以签出远程分支机构/n
git fetch&git checkout remotebranch

假设我们正在搜索发布版/1.0.5

git fetch--all
不工作并且您无法看到远程分支时,
git branch-r
不显示此特定分支

1。从远程打印所有引用(分支、标记等):

git ls远程源站
应该显示您正在搜索的远程分支

e51c80fc0e03abeb2379327d85ceca3ca7bc3ee5        refs/heads/fix/PROJECT-352
179b545ac9dab49f85cecb5aca0d85cec8fb152d        refs/heads/fix/PROJECT-5
e850a29846ee1ecc9561f7717205c5f2d78a992b        refs/heads/master
ab4539faa42777bf98fb8785cec654f46f858d2a        refs/heads/release/1.0.5
dee135fb65685cec287c99b9d195d92441a60c2d        refs/heads/release/1.0.4
36e385cec9b639560d1d8b093034ed16a402c855        refs/heads/release/1.0
d80c1a52012985cec2f191a660341d8b7dd91deb        refs/tags/v1.0
输出中将显示新的分支
release/1.0.5

2。强制获取远程分支:

git获取来源:

现在本地也有了refs,您可以签出(或其他)这个分支


工作完成了

在执行git fetch origin之后,我能够看到新的远程分支,但不确定如果我只执行git fetch,会有什么区别?我读过git远程更新,但不清楚这会做什么。我需要从这里开始为任何新的远程分支运行git fetch吗?@hybrid9如果使用
git fetch
,git将从
.git/config
中指定的默认远程存储库下载引用:通常它将被称为
origin
,因此这两个命令是等效的,但由于某些原因,您的特定配置可能会有所不同。不,您不需要为每个分支提供
git-fetch
,因为(默认情况下)它会获取所有分支。@hybrid9
git-pull
相当于
git-fetch
+
git-merge
(或者
git-rebase
,如果您更改了默认值,那么您可以像往常一样继续使用
git-pull
,新的远程分支将自动弹出。我最初运行git pull,但我从未见过真正让我困惑的新远程分支。直到我运行git fetch origin。我感谢有时间回答我的问题,因为我也有同样的问题
git ls remote gerritrepo:project
显示了新的远程分支,但是
git branch-a
没有…我必须进行另一个克隆,然后新的分支才会出现
git remote update
这是一种老方法,较新的首选命令是
git fetch
。在我的TortoiseGit(2.8.0.0)版本中左下角的按钮在箭头下有多个选项,它会记住您以前选择的内容。这意味着按钮可能不会显示“远程更新”。如果你以前没用过,它会说“拉”。因此,点击箭头,您将在选项列表中看到“远程更新”。一个相关的问题-设法忘记了
git pull
,感谢我的情况
git fetch
成功了。如果没有遥控器的名字,它就不工作了。这是唯一对我有效的东西。它对我无效。我得到了这个错误:
致命:找不到远程引用
是的,在这个git签出工作正常之后,它也对我起作用了!!这件事发生在我最初的浅克隆之后。完美!!!谢谢!在使用命令
brew-tap-user/repo
安装自定义自制tap时,我遇到了这种情况:
brew
克隆的repo的本地副本具有您提到的设置,无法查看和使用我在repo中的其他分支。再次感谢!:)+1.可以使用以下命令代替手动编辑.git/config文件
git-config remote.origin.fetch“+refs/heads/*:refs/remotes/origin/*”
然后
git-fetch-origin
获取origin上的所有分支。这是一个不错的选择!我当时正面临这个问题,第一个答案对我没有帮助,但你的答案对我没有帮助