远程存储库的Git checkout远程分支

时间:2012-05-14 10:06:04

标签: git refspec

当git克隆一些存储库时,它会从中检索所有分支:

git clone https://github.com/android/platform_build.git build1
cd build1/ && git branch -a && cd ..

然后,当我使用build1作为镜像并克隆它时,我看不到它的所有远程分支(我只看到build1的本地主分支)

git clone build1 build2
cd build2 && git branch -a && cd ..

如何查看远程分支的远程?

我知道我可以使用命令

检出build1镜像中的所有远程分支
cd build1 && for remote in `git branch -r `; do git branch --track $remote; done

Track all remote git branches as local branches 但是,如果我无法访问build1目录呢?

此外,还有git ls-remote origin命令显示所有远程引用,但是有没有优雅的方法来检查远程分支的远程?

1 个答案:

答案 0 :(得分:1)

build1克隆到build2后,build1build2的{​​{1}},originbuild2一无所知},这是“远程”分支所在的地方。一种解决方案可能是在https://github.com/android/platform_build.git的配置中将https://github.com/android/platform_build.git添加为远程。添加名为build2的遥控器:

github

然后运行git remote add github https://github.com/android/platform_build.git 以获取远程分支:

fetch

现在,当您运行git fetch github 时,您会看到前缀为git branch -a的分支与remotes/github/中以remotes/origin为前缀的分支相对应。

另一方面,build1应该为build2中的每个本地分支设置一个远程分支,包括那些从build1角度跟踪远程分支的分支。例如,如果github上有一个名为build1的分支,它将在foo中显示为remotes/origin/foo。如果您设置一个本地分支来跟踪build1中也称为build1的远程分支,那么foo也应该有build2。然后,当remotes/origin/foo通过从github的foo获取/合并更改在build1中更新时,这些更改应在foo / {{后build2中显示1}}。