web-dev-qa-db-ja.com

gitはリモートリポジトリからすべてのブランチをプルします

すべてのリモートブランチを自分のリポジトリにプルするにはどうすればよいですか?

私が入力した場合:

git branch -a

ブランチの長いリストを取得しますが、次のように入力すると:

git branch 

そのうち2つしか表示されません。

[〜#〜] all [〜#〜]ブランチをローカルリストにプルするにはどうすればよいですか?

私ができることを知っています:

git checkout --track Origin/branch-name

しかし、それは一度に1つのブランチのみをプルおよびチェックアウトします。実行するという面倒な作業なしに、すべてを一度に実行する方法 git checkout --track Origin/branch-name 何度も何度も?


追伸私は次のコマンドを試しましたが、どれもリモートブランチが表示されませんでした git branch リスト:

git fetch --all
git remote update
git pull --all
24
MarcinWolny

pstream ブランチ、および それらを追跡する をすべて表示するために通常使用するコマンドは、「 すべてのリモートgitブランチをローカルブランチとして追跡する 」で詳しく説明されています。

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

または:

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

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

remote=Origin ; // put here the name of the remote you want
for brname in `
  git branch -r | grep $remote | grep -v master | grep -v HEAD 
  | awk '{gsub(/[^\/]+\//,"",$1); print $1}'
`; do 
  git branch --set-upstream-to $remote/$brname $brname; 
  # or
  git branch --track $brname  $remote/$brname ; 
done

2つ目は、リモートブランチを追跡する新しいローカルブランチを作成するためのものです。

16
VonC

私はいつもこれを使用し、それは完璧に動作します

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#Origin/}" "$remote"; done
git fetch --all
git pull --all
2
pixel 67

あなたは次のようなものを試してください:-

$ git fetch --all
$ for branch in `git branch -r | cut -d '/' -f2-` ; do git checkout $branch && git pull Origin $branch ; done
2
Mr. Pundir