Git:看不到新的远程分支

时间:2012-10-06 19:06:03

标签: git remote-branch

一位同事将一个新的远程分支推送到origin / dev / homepage,我跑的时候看不到它:

$ git branch -r

我仍然看到预先存在的远程分支。

我认为这是因为我的本地远程refs不是最新的因此当我运行git时没有发生任何事情,因为git pull只会拉动当前工作分支正确吗?与git push不同,它将所有分支都推送到相应的远程分支?

9 个答案:

答案 0 :(得分:116)

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

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

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

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

答案 1 :(得分:38)

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

答案 2 :(得分:28)

执行 git远程更新还将更新远程存储库中可用的分支列表。

如果您使用的是TortoiseGit,从版本1.8.3.0开始,您可以执行“Git - &gt; Sync”,并且会出现一个窗口左下角的“远程更新”按钮。点击它。然后你应该能够做“Git - &gt; Switch / Checkout”并让新的远程分支出现在你可以选择的分支下拉列表中。

答案 3 :(得分:23)

假设我们正在搜索版本1.0.5

git fetch -all不起作用并且您看不到远程分支并且git branch -r不显示该特定分支时。

1。打印远程的所有裁判(分支,标签等):

git ls-remote origin 应该显示您要搜索的远程分支。

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 fetch origin <name_branch>:<name_branch>

$ git fetch origin release/1.0.5:release/1.0.5

remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (313/313), done.
remote: Compressing objects: 100% (160/160), done.

Receiving objects: 100% (231/231), 21.02 KiB | 1.05 MiB/s, done.
Resolving deltas: 100% (98/98), completed with 42 local objects.
From http://git.repo:8080/projects/projectX
 * [new branch]        release/1.0.5 -> release/1.0.5

现在您在本地也有裁判,您可以结帐(或其他方式)此分支。

工作完成!

答案 4 :(得分:22)

我有时遇到同样的问题。

最简单的答案是:

git fetch origin <branch_name>

答案 5 :(得分:3)

这听起来微不足道,但我的问题是我不在正确的项目中。确保您所在的项目符合预期;否则,你无法拉下正确的分支。

答案 6 :(得分:1)

最终为我工作的是将远程存储库名称添加到if (SanityResults != null) { //code } 命令,如下所示:

git fetch

现在你可以看到所有这些:

git fetch core

答案 7 :(得分:0)

I used brute force and removed the remote and then added it

git remote rm <remote>
git remote add <url or ssh>

答案 8 :(得分:0)

您可以检出远程分支/ n git fetch && git checkout remotebranch