从远程仓库检出远程分支的Git命令

4
当使用git clone克隆某个仓库时,它会检索出所有的分支:
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

将所有远程 git 分支作为本地分支跟踪 但如果我没有访问 build1 目录怎么办?

另外,有一个 git ls-remote origin 命令可以显示所有远程引用,但是否有一种优雅的方法来检出那些远程的远程分支呢?


我可以建议使用 git:// 代替 https:// 吗?对于您和服务器来说,获取数据更加高效。 - jthill
1个回答

1

在将build1克隆到build2之后,build1成为了build2origin,而build2对于存储“remote”分支的https://github.com/android/platform_build.git一无所知。解决方案之一是在build2的配置中添加https://github.com/android/platform_build.git作为远程仓库。要添加名为github的远程仓库:

git remote add github https://github.com/android/platform_build.git

然后运行fetch以获取远程分支:

git fetch github

现在,当你运行git branch -a时,你应该看到以remotes/github/为前缀的分支,这些分支与build1中以remotes/origin为前缀的分支相对应。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接