首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取远程远程和远程远程分支

获取远程远程和远程远程分支
EN

Stack Overflow用户
提问于 2011-02-18 20:58:23
回答 1查看 434关注 0票数 1

我想获取远程存储库的远程分支。

所以,例如,在这种情况下-

代码语言:javascript
复制
$ cd alpha
$ git remote
beta
$ git branch -a
master
remotes/alpha/master
$ cd ../beta
$ git remote
gamma
$ git branch -a
master
remotes/gamma/slave

详细说明:我想通过betagammaslave分支提取到alpha存储库中。这可能会将gamma添加为alpha的远程分支,并使用gamma/slave作为新分支的refspec。我不一定要创建本地跟踪分支。我也不一定拥有对betagamma的文件系统访问权限,这与示例中的情况不同。

这类事情可以用$ git clone --mirror来完成,但是有没有办法在已经存在的repo中做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2011-02-20 09:46:41

它看起来像是设置一个非默认的refspec会让我走到半路。

例如,考虑下面的设置

  • 初始化gamma

$ (mkdir gamma;cd gamma;git init;touch README;git add README;git commit -m 'Initialized slave‘;Git分支测试从属程序;echo)已在/tmp/test- git /gamma/.git/ -m (根提交) 0cebd50初始化从属程序中初始化空的git存储库。0个文件已更改,0个插入(+),0个删除(-)创建模式100644 README

  • Initialize beta并将gamma添加为远程:

$ (mkdir beta;cd beta;git init;touch README;git add README;git commit -m 'Initialized master.';Git remote add gamma ../伽马;git fetch gamma;echo "In repo $(basename $PWD):";git分支-a;echo)在/tmp/test- git /beta/.git/ master (root-commit) f6512e1 Initialized master中初始化空的git存储库。0个文件已更改,0个插入(+),0个删除(-) create mode 100644自述文件警告:无公共提交远程:计算对象数: 3,完成。远程:总计3(增量0),重用0(增量0)解包对象: 100% (3/3),完成。来自../gamma * repo beta中的新分支从->γ/ slave:* master remotes/gamma/slave

  • clone beta to make alpha

$ git克隆测试版在/tmp/ remotes/origin/master - Git / alpha /.git/$ cd alpha中初始化空的git存储库;git分支-a *主远程/源/头->源/主git

现在变得激烈起来:

代码语言:javascript
复制
# Avoid errors from pulling into active branch.
$ git checkout origin/master  | head -3  # intentionally acquire severed HEAD
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
$ git fetch origin '+refs/*:refs/*'      # pour steroids into open esophagus
From /tmp/test-git/beta
 * [new branch]      gamma/slave -> gamma/slave
$ git branch -a
* (no branch)
  master
  remotes/gamma/slave
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git remote
origin

因此,执行‘$ git fetch '+refs/:refs/’将拉入分支本身,但不会更新构成它所属的远程的配置项。

有趣的是,为不可远程远程分支设置跟踪分支将导致它开始跟踪自己的repo:

代码语言:javascript
复制
$ git branch --track slave gamma/slave 
Branch slave set up to track local ref refs/remotes/gamma/slave.
$ git config -l | grep '^remote\|^branch'
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=/tmp/test-git/beta
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.slave.remote=.
branch.slave.merge=refs/remotes/gamma/slave

我认为这并不是真的有效。

代码语言:javascript
复制
$ git checkout slave
Switched to branch 'slave'
$ git fetch
From .
 * remote branch     gamma/slave -> FETCH_HEAD
$ git fetch
From .
 * remote branch     gamma/slave -> FETCH_HEAD
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5041549

复制
相关文章

相似问题

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