最初に、リモート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'
その最後の行には、「新しいブランチ」という人がいます。それが実際に意味することは、ブランチがインデックスから取得され、ローカルに作成されることです。以前のそれはブランチが通常の原点/ 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 branch -a
)はリモートのブランチを示していますが、それらのいずれかをチェックアウトしようとすると、「デタッチされたHEAD」状態になります。次の回答(2番目に賛成)は、別の質問に答えます(つまり、すべてのブランチをプルする方法です。これは、ローカルで追跡しているブランチに対してのみ機能します)。コメントのいくつかは、git branch -a
すべてのリモートブランチをローカルで追跡するシェルスクリプトで結果を解析できることを指摘しています。概要:希望どおりの操作を行うためのgitネイティブの方法はありません。いずれにしても、それほど素晴らしいアイデアとは限りません。