首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Git中克隆所有远程分支?

如何在Git中克隆所有远程分支?
EN

Stack Overflow用户
提问于 2008-09-16 06:42:07
回答 41查看 1.5M关注 0票数 4.5K

我有一个master和一个development分支,这两个分支都推送到GitHub。我使用了cloned、pulled和fetched,但是除了master分支之外,我仍然无法获得其他任何东西。

我确信我遗漏了一些明显的东西,但我已经看过手册了,我根本就不了解joy。

EN

回答 41

Stack Overflow用户

回答已采纳

发布于 2008-09-16 13:28:22

首先,克隆一个远程Git存储库并将其cd到其中:

代码语言:javascript
运行
复制
$ git clone git://example.com/myproject
$ cd myproject

接下来,查看存储库中的本地分支:

代码语言:javascript
运行
复制
$ git branch
* master

但还有其他分支隐藏在您的存储库中!您可以使用-a标志查看以下内容:

代码语言:javascript
运行
复制
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

如果您只是想快速浏览一下上游分支,可以直接查看:

代码语言:javascript
运行
复制
$ git checkout origin/experimental

但是,如果您想在该分支上工作,则需要创建一个本地跟踪分支,该分支是通过以下方式自动完成的:

代码语言:javascript
运行
复制
$ git checkout experimental

你将会看到

代码语言:javascript
运行
复制
Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

在这里,“新分支”只是指从索引中提取分支并在本地为您创建的分支。正如前一行所告诉您的,分支被设置为跟踪远程分支,这通常意味着原始/分支名称分支。

现在,如果您查看您的本地分支,您将看到以下内容:

代码语言:javascript
运行
复制
$ git branch
* experimental
  master

实际上,您可以使用git remote跟踪多个远程存储库。

代码语言:javascript
运行
复制
$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

在这一点上,事情变得非常疯狂,所以运行gitk来看看发生了什么:

代码语言:javascript
运行
复制
$ gitk --all &
票数 4.9K
EN

Stack Overflow用户

发布于 2011-01-14 00:42:40

如果您有许多想要一次获取的远程分支,请执行以下操作:

代码语言:javascript
运行
复制
$ git pull --all

现在,您可以根据需要签出任何分支,而无需访问远程存储库。

注意:这不会创建任何未检出分支的工作副本,这就是问题所在。有关这一点,请参见

票数 892
EN

Stack Overflow用户

发布于 2011-01-21 10:18:36

这个Bash脚本帮了我大忙:

代码语言:javascript
运行
复制
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

它将为除master之外的所有远程分支创建跟踪分支(可能是从原始的clone命令获得的)。我想你可能还需要做一次

代码语言:javascript
运行
复制
git fetch --all
git pull --all

肯定的是。

One linergit branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs

像往常一样:按照我们所知,在复制rm -rf领域之前在您的设置中进行测试

一行程序的积分转到用户cfi

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

https://stackoverflow.com/questions/67699

复制
相关文章

相似问题

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