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

我有一个master和一个development分支,都推到GitHub。 我已经clone d, pull版,并fetch版,但我仍然无法获得比其他任何master分支回来。

我确信我错过了一些明显的东西,但我已经阅读了手册,并且我没有得到任何喜悦。


首先,克隆一个远程Git仓库并将其放入CD中:

$ git clone git://example.com/myproject
$ cd myproject

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

$ git branch
* master

但是还有其他分支隐藏在你的仓库中! 你可以使用-a标志看到这些:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

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

$ git checkout origin/experimental

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

$ git checkout experimental

你会看到

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

最后一行提出了一些人:“新分支” - 嗯? 它的真正含义是该分支从索引中获取并在本地为您创建。 上一行实际上更具信息性,因为它告诉你分支正在设置为跟踪远程分支,这通常意味着origin / branch_name分支

现在,如果你看看你当地的分支机构,你会看到:

$ git branch
* experimental
  master

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

$ 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看看发生了什么:

$ gitk --all &

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

$ git pull --all

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


这Bash脚本帮助我:

#!/bin/bash
for branch in $(git branch --all | grep '^s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

它会创建除master以外的所有远程分支的跟踪分支(您可能从原始克隆命令中获得)。 我想你可能还需要做一个

git fetch --all
git pull --all

为了确定。

一个班轮git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^*?s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^*?s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^*?s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2n)} else {$d{$_}=1}' | csh -xfs像往常一样:在复制rm -rf universe之前,在您的设置中进行测试,因为我们知道它

单线的信用转到用户cfi

链接地址: http://www.djcxy.com/p/73.html

上一篇: How to clone all remote branches in Git?

下一篇: Why and when to use shell instead of Ruby