首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在git中,如何检查远程存储库的远程分支?

在git中,如何检查远程存储库的远程分支?
EN

Stack Overflow用户
提问于 2010-06-14 11:29:46
回答 4查看 8.6K关注 0票数 16

我从一个裸的远程存储库中克隆了一个本地存储库。下面的命令列出远程存储库的分支。

代码语言:javascript
运行
复制
$ git ls-remote <remote>

74bd3eb190edb39db04f6c0c4dbbb9e1e96bc6db    refs/remotes/test
85de54d6ae813c624b9623983e6b0a4948dae0fe    refs/remotes/trunk

我要结账并跟踪遥控器的远程分支干线。我该怎么做?

请注意,这与签出远程存储库的本地分支不同。这就是远程存储库的样子。

代码语言:javascript
运行
复制
$ git branch -a

master
remotes/test
remotes/trunk

在运行git fetch < remote >以获取所有远程存储库的分支之后,我在本地存储库中获得了这个输出。

代码语言:javascript
运行
复制
$ git branch -r

repo/HEAD -> repo/master
repo/master
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-14 12:09:06

您可以从任何远程获取任何ref (只要服务器愿意给您)。在refs/heads/之外获取推荐的关键是提供从refs/开始的完整引用路径。如果需要,您甚至可以从未配置为remotes的存储库中提取(git fetch可以采用URL而不是远程名称)。

默认情况下,配置的远程程序只会从远程存储库的refs/heads/命名空间中获取,因此不会在refs/remotes/中获取任何内容。但是,您可以使用像refs/remotes/trunk这样的完整引用(remotes/trunk也可以工作,但也可能是模棱两可)来引用其中的引用。

如果获取的refspec没有指定目标ref,它将存储在特殊的FETCH_HEAD ref中。

将存储库的refs/remote/trunk提取到FETCH_HEAD中,并将其作为独立的头签出:

代码语言:javascript
运行
复制
git fetch remote-name-or-url refs/remotes/trunk &&
git checkout FETCH_HEAD

相同,但是创建一个命名的本地分支,而不是使用分离的头:

代码语言:javascript
运行
复制
git fetch remote-name-or-url refs/remotes/trunk &&
git checkout -b trunk-from-remote FETCH_HEAD

相同,但直接进入当地分支机构:

代码语言:javascript
运行
复制
git fetch remote-name-or-url refs/remotes/trunk:trunk-from-remote &&
git checkout trunk-from-remote

如果您正在使用配置好的远程设备,您可以重写它的remote.<remote-name>.fetch配置,并添加一个额外的条目来自动从refs/heads/refs/remotes/中获取数据。

代码语言:javascript
运行
复制
# fetch branchs of remote into remote-name/heads/*
git config remote.remote-name.fetch '+refs/heads/*:refs/remotes/remote-name/heads/*' &&
# fetch remotes of remote into remote-name/remotes/*
git config --add remote.remote-name.fetch '+refs/remotes/*:refs/remotes/remote-name/remotes/*'

为了避免可能的冲突,上面的示例将fetch配置为将refs存储到不相交的命名空间(…/heads/…/remotes/)。如果你愿意,你可以选择不同的名字。如果您确信不会发生冲突,那么甚至可以将它们直接填充到refs/remotes/remote-name/下面。

票数 12
EN

Stack Overflow用户

发布于 2010-06-14 11:58:00

问得好!我知道这是可行的,我想不出还有什么能使我心满意足的:

代码语言:javascript
运行
复制
git fetch origin refs/remotes/trunk
git checkout FETCH_HEAD
# or make a branch to check out
git checkout -b remote-trunk FETCH_HEAD

很奇怪,顺便说一句,那些远程裁判不是refs/remotes/<remote-name>/<branch-name>格式的.也许我误解了名字,但这种方法确实有效。

票数 6
EN

Stack Overflow用户

发布于 2010-06-14 12:47:21

事实上,我找到了一个令人满意的解决方案。添加一个遥控器可以设置一个refspec来获取和拉出它的本地头。我设置了另一个遥控器,我称之为/repo-remotes/它获取遥控器的远程参考。.git/config文件最后看起来如下所示

代码语言:javascript
运行
复制
[remote "repo"]
  url = ssh://git@<hostname>:<port>/repo
  fetch = +refs/heads/*:refs/remotes/repo/*

[remote "repo-remotes"]
  url = ssh://git@<hostname>:<port>/repo
  fetch = +refs/remotes/*:refs/remotes/repo-remotes/*

然后我就可以这么做了。

代码语言:javascript
运行
复制
$ git fetch repo-remotes
$ git checkout -b remote-trunk --track remotes/repo-remotes/trunk

它设置一个本地分支,跟踪远程存储库的远程分支/主干/。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3036817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档