3

のリポジトリに、という名前のブランチを含む複数の$REPO_URLブランチがあるとします。さて、次のコマンドを次々と実行するとします。dev

% git clone $REPO_URL --branch dev wd
% cd wd
% git branch -a
* dev
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/issue6
  remotes/origin/issue26
  remotes/origin/issue30
  ...
  remotes/origin/issue709
  remotes/origin/issue712
  remotes/origin/issue716
  remotes/origin/master

フォームの各ブランチに正確に一致remotes/origin/Xするローカル ブランチが存在するようにするには、この時点で何をする必要がありますか? Xこれは、次の 2 つのコマンドが同じ出力を生成することを意味します。

% git rev-parse remotes/origin/X
% git rev-parse X

また、の出力は次のgit branch -aようになります。

* dev
  issue6
  issue26
  issue30
  ...
  issue709
  issue712
  issue716
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/issue6
  remotes/origin/issue26
  remotes/origin/issue30
  ...
  remotes/origin/issue709
  remotes/origin/issue712
  remotes/origin/issue716
  remotes/origin/master
4

2 に答える 2

3

fetchリポジトリのクローンを作成したときにすでに実行しているため、これは必要ありません。必要なのは、各リモートトラッキングブランチに一致するローカルブランチです。これには、次を使用できますcheckout

git checkout -b issue6 origin/issue6

したがって、すべてのリモートブランチをループしてチェックアウトするスクリプトを作成できます。

コメントで述べたように、最近のバージョンのgitはより単純なコマンドを使用できます。

git checkout issue6
于 2013-03-07T19:48:21.450 に答える
2

シェルforループはそれを行います:

for BRANCH in $(git branch -r | grep -v HEAD) # list of remote branches (excluding HEAD)
do
    git checkout --track ${BRANCH}
done
于 2013-03-07T19:49:20.230 に答える