Git:无法看到新的远程分支
一位同事将一个新的远程分支推送到origin/dev/homepage,我运行时无法看到它: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仔细检查分支是否已被远程推送到。如果新分支出现在输出中,请尝
$ 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
,因为(默认情况下)它会获取所有分支。@hybrid9git-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上的所有分支。这是一个不错的选择!我当时正面临这个问题,第一个答案对我没有帮助,但你的答案对我没有帮助