web-dev-qa-db-ja.com

Gitですべてのリモートブランチを複製する方法

私はmasterdevelopmentのブランチを持っていて、どちらも GitHub にプッシュしています。私はcloned、pulled、およびfetchedを持っていますが、masterブランチ以外のものを取り戻すことはできません。

明白なことが足りないと確信していますが、マニュアルを読んだことがあり、まったく喜びがありません。

3819
Peter Coulton

まず、リモートの 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'

その最後の行に何人かの人々が投げかけられます: "New branch" - そうですか?本当に意味があるのは、ブランチがインデックスから取り出され、ローカルに作成されるということです。 previous 行は、ブランチがリモートブランチを追跡するように設定されていることを示しているので実際にはより有益です。これは通常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 &
4191
emk

一度に取得したいリモートブランチがたくさんある場合は、次のようにします。

$ git pull --all

これで、リモートリポジトリにアクセスせずに、必要に応じてブランチをチェックアウトできます。

763
Gabe Kopley

この 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(あなたがおそらくオリジナルのcloneコマンドから得たもの)を除くすべてのリモートブランチ用のトラッキングブランチを作成します。私はあなたがまだやる必要があるかもしれないと思います 

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/$2\n)} else {$d{$_}=1}' | csh -xfsいつものように:rm -rf universeをコピーする前にセットアップをテストしてください。 

ワンライナーのクレジットはユーザーcfiに移動します

388
bigfish

--mirrorオプションを使用すると、remote追跡ブランチを適切にコピーするようです。しかし、リポジトリをベアリポジトリとして設定するので、後で通常のリポジトリに戻す必要があります。

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch

参照: Git FAQ:すべての遠隔追跡ブランチでリポジトリを複製するにはどうすればいいですか?

300
Dave

派手な "git checkout -b somebranch Origin/somebranch"構文を使わなくても簡単にブランチに切り替えることができます。あなたはただすることができます:

git checkout somebranch

Gitは自動的に正しいことをします。

$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from Origin.
Switched to a new branch 'somebranch'

Gitは、同じ名前のブランチが1つのリモートに存在するかどうかをチェックします。存在する場合は、リモートブランチであることを明示的に指定した場合と同じ方法で追跡します。 Git 1.8.2.1のgit-checkoutのmanページから:

<branch>が見つからないが内に正確に一致する名前を持つ1つのリモート(それを<remote>と呼ぶ)にトラッキングブランチが存在する場合は、と同等の扱い

$ git checkout -b <branch> --track <remote>/<branch>
208
Nikos C.

について、

$ git checkout -b実験的起源/実験的

使う

$ git checkout -t Origin/experimental

またはより冗長だが覚えやすい

$ git checkout --track Origin/experimental

リモートリポジトリを追跡するという点では良いかもしれません。 

90
murphytalk

あなたがしているフェッチはすべてのリモートブランチを取得するべきですが、それはそれらのためのローカルブランチを作成しません。 gitkを使っているのであれば、リモートブランチが "remotes/Origin/dev"かそれに類似したものとして記述されているはずです。

リモートブランチに基づいてローカルブランチを作成するには、次のようにします。

git checkout -b dev参照/リモート/ Origin/dev

これは次のようになります。

ブランチdevはリモートブランチref/remotes/origin/devを追跡するように設定されました
新しいブランチ "dev"に切り替えられました

さて、あなたがdevブランチにいるとき、 "git pull"はあなたのローカルdevをリモートdevブランチと同じポイントに更新します。それはすべての枝を取得しますが、あなたが木のてっぺんに上にあるものだけを引っ張ることに注意してください。

78
Luuk Paulussen

"git clone git:// location"を実行すると、すべてのブランチとタグが取得されます。

特定のリモートブランチの上で作業するために、それがOriginのリモートであると仮定します。

git checkout -b branch Origin/branchname
57
elmarco

エイリアスを使用してください。ネイティブのGit one-linerはありませんが、あなた自身を次のように定義できます

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'

そしてそれを

git clone-branches
49
nobody

これはそれほど複雑ではなく、非常に単純で直接的なステップは次のとおりです。

git fetch Originこれはあなたのローカルにすべてのリモートブランチを持ってくるでしょう。

git branch -aこれはあなたにすべてのリモートブランチを表示します。

git checkout --track Origin/<branch you want to checkout>

次のコマンドで、目的のブランチにいるかどうかを確認してください。

git branch

出力はこうなります。

*your current branch 
some branch2
some branch3 

現在の分岐を示す*記号に注目してください。

44
Sam

なぜあなたは「マスター」しか見えない

git cloneはすべてのリモートリモートブランチをダウンロードしますが、ファイルが新しいリポジトリに配置されていても、それらを「リモート」と見なします。例外が1つあります。クローン作成プロセスでは、「master」というリモートブランチから「master」というローカルブランチが作成されます。デフォルトでは、git branchはローカルブランチのみを表示します。そのため、「master」しか表示されません。

git branch -aはすべてのブランチを示します、 リモートブランチを含む


地元の支店への行き方

もしあなたが実際にブランチで作業したいのなら、おそらく "ローカル"バージョンのブランチが欲しいでしょう。リモートブランチ からローカルブランチを作成するには(チェックアウトして作業ディレクトリの内容を変更せずに) とすると、次のようになります。

git branch branchone Origin/branchone
git branch branchtwo Origin/branchtwo
git branch branchthree Origin/branchthree

この例では、branchoneOrigin/branchoneに基づいて作成しているローカルブランチの名前です。代わりに異なる名前のローカルブランチを作成したい場合は、これを実行できます。

git branch localbranchname Origin/branchone

ローカルブランチを作成したら、git branchでそれを見ることができます(ローカルブランチを見るのに-aは必要ありません)。

43
Cerran

決して遅刻はしませんが、これを行うための最善の方法は次のとおりです。

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

この時点で、すべてのブランチを含むリモートリポジトリの完全なコピーが手に入ります(git branchで確認してください)。リモートレポジトリにリモートのリモートリポジトリがある場合は、--mirrorの代わりに--bareを使用できます。

42
Jacob Fike

これをしてください。

$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from Origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
  master
$ git branch -a
* branchxyz
  master
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/branchxyz
  remotes/Origin/branch123

「git clone git://example.com/myprojectt」がすべてのブランチを取得します。ブランチをチェックアウトするだけで、ローカルブランチが作成されます。

38
rapher

すべてのブランチを取得するには、 "git clone"を使用するだけです。

git clone <your_http_url>

マスターブランチしか表示されない場合でも、すべてのブランチを表示するには "git branch -a"を使用できます。

git branch -a

そして、あなたはすでに持っているブランチに切り替えることができます。

git checkout <your_branch_name>

「git clone」の後、リモートレポジトリに接続する必要がないことを心配しないでください。それで、あなたが "git clone"をするとき、それはすでにリモートレポジトリからすべてのブランチをコピーしたことが証明されています。その後、あなたはリモートレポを必要としません、あなたのローカルはすでにすべてのブランチのコードを持っています。 

23
Haimei

git cloneはリポジトリ全体をコピーすることになっています。複製してから、git branch -aを実行してください。それはすべての枝をリストするべきです。それからあなたが "master"の代わりに "foo"に分岐したい場合は、git checkout fooを使います。

22
MattoxBeckman

私のツール git_remote_branch を使ってください(あなたのマシンにはRubyが必要です)。リモートブランチの操作を簡単にするために特別に構築されています。

それはあなたに代わって操作をするたびに、それはコンソールに赤でそれを印刷します。時間が経つにつれて、彼らはついにあなたの脳に突き刺さる:-)

Grbに代わってコマンドを実行させたくない場合は、単に 'explain'機能を使用してください。コマンドは実行されるのではなく、コンソールに表示されます。

最後に、暗記を容易にするために、すべてのコマンドにエイリアスがあります。

これは alpha software ;-)です。

これはgrb helpを実行したときのヘルプです。

 git_remote_branchバージョン0.2.6 
 
使用法:
 
 grb create branch_name [Origin_server] 
 grb publish branch_name [Origin_server] 
 grb rename branch_name [origin_server] 
 
 grb delete branch_name [Origin_server] 
 grb track branch_name [ Origin_server] 
 
 
注意:
  -  Origin_serverが指定されていない場合は、 'Origin'という名前が使用されます[g。 default)
  - 名前変更機能は現在のブランチの名前を変更します
 
 Explainメタコマンド:
キーワードに 'explain'を付けて任意のコマンドを追加することもできます。コマンドを実行する代わりに、git_remote_branch 
はその目的を達成するために実行する必要があるコマンドのリストを単に出力します。
 
例:
 grb explain create 
 grb Explain create my_branch github 
 
すべてのコマンドにもエイリアスがあります。
 create:create、new 
 delete:delete、destroy、 [削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除]
19
webmat

ここで見たすべての答えは有効ですが、リポジトリを複製してすべてのブランチを一度に引っ張るためのはるかにクリーンな方法があります。 

リポジトリをクローンすると、ブランチのすべての情報が実際にダウンロードされますが、ブランチは非表示になります。コマンドで

$ git branch -a

あなたはリポジトリのすべてのブランチを表示することができ、そしてコマンドで

$ git checkout -b branchname Origin/branchname

その後、それらを手動で一度に1つずつ「ダウンロード」できます。 


しかし、たくさんのブランチでレポジトリを複製したい場合、上で説明したすべての方法は、少し複雑ではありますが、ここで説明するより簡潔で迅速な方法に関しては長くて退屈です。これを達成するには3つのステップが必要です。

  1. 最初の一歩

あなたのマシン上に新しい空のフォルダを作成し、リポジトリから.gitフォルダのミラーコピーを複製します。

$ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
$ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git

my_repo_folderフォルダ内のローカルリポジトリはまだ空です。ターミナルから "ls -alt"コマンドで見ることができるように、隠された.gitフォルダがあるだけです。

  1. 第二段階

git設定のブール値 "bare"をfalseに切り替えて、このリポジトリを空の(ベア)リポジトリから通常のリポジトリに切り替えます。

$ git config --bool core.bare false
  1. 第三段階

現在のフォルダ内にあるものすべてをつかみ、ローカルマシン上にすべてのブランチを作成します。したがって、これは通常のリポジトリになります。 

$ git reset --hard

だから今、あなたはただコマンド "git branch"をタイプすることができますそしてあなたはすべてのブランチがダウンロードされているのを見ることができます。 

これはgitリポジトリを一度にすべてのブランチでクローンすることができる簡単な方法ですが、この方法ですべての単一プロジェクトに対してやりたいことではありません。 

15
FedericoCapaldo

私はそれを短縮することが可能であることに気づいた質問に対する答えの一つを見て:

for branch in  `git branch -r | grep -v 'HEAD\|master'`; do  
 git branch --track ${branch##*/} $branch;
done

ただし、リモートブランチの1つが、たとえば、次のように指定されている場合は注意してください。 admin_masterそれはダウンロードされません!

独創的なアイデアを寄せてくれたbigfishに感謝

12
Tebe

OK、 リポジトリを複製すると、そこにすべてのブランチがあります。

git branchを実行するだけでは、それらはちょっと隠されています...

あなたがすべてのブランチの名前を見たいのであれば、単にこのように--allフラグを追加するだけです:

git branch --allまたはgit branch -a

ブランチにチェックアウトするだけで、必要なものがすべて手に入ります。

しかし、クローン作成後に他の人が作成したブランチがどうだったのでしょうか。

この場合は、次のようにしてください。

git fetch

そしてもう一度すべてのブランチをチェックしてください...

フェッチとチェックアウトを同時にしたい場合は、次のようにします。

git fetch && git checkout your_branch_name

また、私が言ったことを簡単にするために、下の画像も作成しました。

git branch --all to get all branches

12
Alireza

ローカルレポジトリからのクローン作成はgit clone&git fetchでは動作しません:たくさんのブランチ/タグは未取得のままです。

すべてのブランチとタグを含むクローンを取得する。

git clone --mirror git://example.com/myproject myproject-local-bare-repo.git

すべてのブランチとタグだけでなく作業コピーも含むクローンを取得するには:

git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master
11
raisercostin
#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/Origin/} $branch
done

これらのコードは、すべてのリモートブランチのコードをローカルリポジトリに格納します。

11
Albert.Qing

コマンドラインにコピー&ペーストする場合:

git checkout master ; remote=Origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master

より読みやすくするために:

git checkout master ;
remote=Origin ;
for brname in `
    git branch -r | grep $remote | grep -v master | grep -v HEAD 
    | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'
`; do
    git branch -D $brname ;
    git checkout -b $brname $remote/$brname ;
done ;
git checkout master


この意志:

  1. マスターをチェックアウトする(私たちがいるブランチを削除できるように)
  2. チェックアウトするにはremote を選択します
  3. マスターとHEADを除くすべてのブランチのループ - [/] [[]。
    1. delete local branch(強制更新されたブランチをチェックアウトできるように)
    2. リモートからチェックアウト ブランチ
  4. マスターをチェックしてください(それのために)

answer / VonC に基づく

10
ikaruss

私はこの小さな Powershell 関数を書いて、Originのリモートにあるすべてのgitブランチをチェックアウトできるようにしました。

Function git-GetAllRemoteBranches {
     iex "git branch -r"                       <# get all remote branches #> `
     | % { $_ -Match "Origin\/(?'name'\S+)" }  <# select only names of the branches #> `
     | % { Out-Null; $matches['name'] }        <# write does names #>
}


Function git-CheckoutAllBranches {
    git-GetAllRemoteBranches `
        | % { iex "git checkout $_" }          <# execute ' git checkout <branch>' #>
}

より多くのgit関数が 私のgit設定リポジトリ にあります。

8
gringo_dave

私もまったく同じようにする必要がありました。これが私の Ruby スクリプトです。

#!/usr/bin/env Ruby

local = []
remote = {}

# Prepare
%x[git reset --hard HEAD]
%x[git checkout master] # Makes sure that * is on master.
%x[git branch -a].each_line do |line|
  line.strip!
  if /Origin\//.match(line)
     remote[line.gsub(/Origin\//, '')] = line
   else
     local << line
   end
end
# Update 
remote.each_pair do |loc, rem|
  next if local.include?(loc)
  %x[git checkout --track -b #{loc} #{rem}]
end
%x[git fetch]
8
user43685

Gitは通常(指定されていない場合)履歴を完成させるのに必要なオブジェクトと共に1つ以上の他のリポジトリからすべてのブランチやタグ(参照:git ls-refs)を取得します。言い換えれば、すでにダウンロードされているオブジェクトから到達可能なオブジェクトを取得します。参照してください: git fetchは本当に何をするのですか?

現在のものに直接接続されていないブランチ/タグがある場合があるので、git pull --all/git fetch --allは役に立たないでしょうが、それらをリストすることができます:

git ls-remote -h -t Origin

そして、参照名を知っていることによってそれらを手動で取得します。

それで それらをすべてフェッチするために 、試してください:

git fetch Origin --depth=10000 $(git ls-remote -h -t Origin)

--depth=10000パラメータは、リポジトリを浅くしている場合に役立つかもしれません。

それからあなたのすべての枝をもう一度チェックしてください。

git branch -avv

上記の方法で解決しない場合は、足りないブランチを追跡リストに手動で追加する必要があります(どういうわけかそれらが失われたため)。

$ git remote -v show Origin
...
  Remote branches:
    master      tracked

git remote set-branchesによると、

git remote set-branches --add Origin missing_branch

そのため、取得後にremotes/Originの下に表示されることがあります。

$ git remote -v show Origin
...
  Remote branches:
    missing_branch new (next fetch will store in remotes/Origin)
$ git fetch
From github.com:Foo/Bar
 * [new branch]      missing_branch -> Origin/missing_branch

トラブルシューティング

それでもマスターブランチ以外に入手できない場合は、以下を確認してください。

  • あなたのリモコン(git remote -v)を再確認してください、例えば
    • git config branch.master.remoteOriginであることを確認してください。
    • Origingit remote show Originで正しいURLを指しているか確認してください(こちらの post をご覧ください)。
6
kenorb

2017年初めの時点で、答え このコメントの中に は動作します。

git fetch <Origin-name> <branch-name>はあなたのために分岐を下げます。これですべてのブランチを一度に取得するわけではありませんが、ブランチごとに個別に実行できます。

6
ashes999

ユーザーの誰もが正しい道を進んでいることを除いて、これらの答えのどれもそれを切らなかった。

あるサーバー/システムから別のサーバー/システムにリポジトリを移動するのに問題がありました。レポジトリをクローンしたとき、それはmasterのローカルブランチしか作成しなかったので、新しいremoteにプッシュしたとき、masterブランチだけがプッシュされました。

だから私はこれら二つの方法が非常に便利だと思った。彼らが他の誰かを助けることを願っています。

方法1:

git clone --mirror OLD_REPO_URL
cd new-cloned-project
mkdir .git
mv * .git
git config --local --bool core.bare false
git reset --hard HEAD
git remote add newrepo NEW_REPO_URL
git Push --all newrepo
git Push --tags newrepo

方法2:

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
git clone OLD_REPO_URL
cd new-cloned-project
git clone-branches
git remote add newrepo NEW_REPO_URL
git Push --all newrepo
git Push --tags newrepo
6
Gaui

覚えやすいコマンドを使う

私はBitbucket、Atlassianのリポジトリホスティングサービスを使っています。だから私は彼らのドキュメントに従うようにしてください。そしてそれは私にとっては完璧に機能します。以下の簡単で短いコマンドで、あなたはあなたのリモートブランチをチェックアウトすることができます。

まずリポジトリのクローンを作成してから、目的のフォルダに移動します。そして最後になりましたが、少なくともフェッチしてチェックアウトするわけではありません。

git clone <repo> <destination_folder>
cd <destination_folder>
git fetch && git checkout <branch>

それでおしまい。もう少し現実的な例を示します。

git clone https://[email protected]/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop

コマンドの詳細については、ドキュメントを参照してください。 クローンコマンドフェッチコマンドチェックアウトコマンド

6
Phil

すべてのリモートブランチのローカルブランチを作成する別の短い1行コマンドを次に示します。

(git branch -r | sed -n '/->/!s#^  Origin/##p' && echo master) | xargs -L1 git checkout

追跡ローカルブランチが既に作成されている場合にも適切に機能します。最初のgit cloneの後、またはいつでも呼び出すことができます。

クローン作成後にmasterブランチをチェックアウトする必要がない場合は、

git branch -r | sed -n '/->/!s#^  Origin/##p'| xargs -L1 git checkout
6
jofel

ここにawkを使用した答えがあります。このメソッドは、新しいリポジトリで使用する場合に十分です。

git branch -r | awk -F/ '{ system("git checkout " $NF) }'

既存のブランチは単純にチェックアウトされるか、すでに存在するものとして宣言されますが、競合を避けるためにフィルターを追加できます。

また、明示的なgit checkout -b <branch> -t <remote>/<branch>コマンドを呼び出すように変更することもできます。

この答えは Nikos C。idea に続きます。


または、代わりにリモートブランチを指定できます。これは murphytalkanswer に基づいています。

git branch -r | awk '{ system("git checkout -t " $NF) }'

競合について致命的なエラーメッセージをスローしますが、それらは無害であると考えています。


両方のコマンドにエイリアスを作成できます。

nobodyanswer を参照として使用すると、次のコマンドを使用してエイリアスを作成できます。

git config --global alias.clone-branches '! git branch -r | awk -F/ "{ system(\"git checkout \" \$NF) }"'
git config --global alias.clone-branches '! git branch -r | awk "{ system(\"git checkout -t \" \$NF) }"'

個人的にはtrack-allまたはtrack-all-branchesを使用します。

4
konsolebox

元のレポジトリのgit clone --mirrorはこれにはうまくいきます。

git clone --mirror /path/to/original.git
git remote set-url Origin /path/to/new-repo.git
git Push -u Origin
3
Bernd Jungblut

ローカルに削除したリモートブランチをプルダウンする方法を見つけようとしたので、ここに2セントを追加します。起源は私のものではありませんでした、そして私はすべてを再クローンすることの面倒を経験したくありませんでした 

これは私のために働いた:

ローカルにブランチを作り直す必要があると仮定します。

git checkout -b recreated-branch-name
git branch -a (to list remote branches)
git rebase remotes/remote-Origin/recreated-branch-name

それで、gituser/masterからsjpに分岐してからそれをsjp/mynewbranchに分岐した場合、このようになります。

$ git checkout -b mynewbranch
$ git branch -a
  master
  remotes/sjp/master
  remotes/sjp/mynewbranch
$ git fetch (habit to always do before)
$ git rebase remotes/sjp/mynewbranch
2
Camwyn

パーティーには少し遅れましたが、これがトリックだと思います。

mkdir YourRepo
cd YourRepo
git init --bare .git                       # create a bare repo
git remote add Origin REMOTE_URL           # add a remote
git fetch Origin refs/heads/*:refs/heads/* # fetch heads
git fetch Origin refs/tags/*:refs/tags/*   # fetch tags
git init                                   # reinit work tree
git checkout master                        # checkout a branch

これが望ましくないことをするならば、私は知りたいです。しかし、これまでのところ、これは私のために働きます。

0
Andy

このバリエーションは、各ブランチを1つずつチェックアウトする必要なしに、ローカルで利用可能なすべてのブランチでリモートレポジトリを複製します。派手なスクリプトは必要ありません。

複製したいリポジトリと同じ名前のフォルダを作成し、cdします。

mkdir somerepo
cd somerepo

今これらのコマンドを実行しますが、実際のリポジトリユーザー名/名前を変更します。 

git clone --bare [email protected]:someuser/somerepo.git .git
git config --bool core.bare false
git reset --hard
git branch

Voiala!あなたはそこにすべての枝を持っています!

0
lacostenycoder

これはgitプロジェクトのすべてのブランチとタグをスナップショットとして別々のフォルダに取得するためのbashスクリプトです。 

https://Gist.github.com/hfossli/7562257

直接尋ねられたことではないかもしれませんが、何人かの人々はこの解決策を探してここに来るかもしれません。

0
hfossli