たとえば、この説明を読んでください http://git-scm.com/book/en/Git-Branching-Remote-Branches
まず、いくつかの git 用語を明確にしましょう。
- fetch: リモート リポジトリからコンテンツ (または更新) を取得する
- pull: フェッチ (上記のように) と 1 つのステップでのマージ
元の投稿者はマージについて言及していなかったので、適切な git 用語で言えば、「リモート リポジトリからすべてのブランチを git fetch してください」と尋ねたかったのかもしれません。
ブランチが表示git branch -a
されている場合は、すでにそれらを取得しています。コマンドを与えることでこれを確認できますgit show remotes/origin/some-branch:some-file
または、例えば行うことができますgit diff remotes/origin/some-branch master
あなたもそれらをチェックアウトすることができますgit checkout remotes/origin/some-branch
(確実にネットワーク ケーブルを取り外して、リモート リポジトリに接続しなくてもコマンドが機能することを確認してください。)
remotes/... という名前のブランチはリモート ブランチと呼ばれますが、既にリポジトリにフェッチされています。それらは読み取り専用であり、変更することはできません (そのため、チェックアウト時にメッセージが表示されます)。これらは最後のフェッチまたはプル操作時のリモート リポジトリの状態を反映していますが、実際にはローカルに保存されています。
そうしgit checkout some-branch
、some-branch がまだ存在しないが、remotes/origin/some-branch が存在する場合、git は some-branch という名前の追跡ブランチを作成します (1)。繰り返しますが、これはローカル操作であり、すべてのデータが以前にフェッチされています (または、最近フェッチしていない場合は、廃止されたバージョンで作業を開始します)。元々、トラッキング ブランチの内容はリモート ブランチと同じです。ただし、追跡ブランチはローカルで変更できます。
git 作業領域には、一度に 1 つのブランチの状態が含まれます。したがって、すべてのリモート ブランチを一度にチェックアウトするという質問は、git のコンテキストでは意味がありません。それらを次々にチェックアウトできます。ただし、次のものをチェックアウトするたびに、前のものは作業領域から消えます。もちろん、この操作は、すべてのリモート git ブランチをローカル ブランチとして追跡するに示すようにスクリプト化できます。
リモートブランチはリモートにのみ保存され、ローカルには保存されず、すべてがローカルであることを確認したかっただけであると仮定すると、誤解が原因で質問が発生する可能性がありますか? 一度に複数のブランチをチェックアウトしたい場合は、リポジトリをローカルに複製し、異なるブランチを異なる作業領域にチェックアウトできます。(2)
手短に: リモートリポジトリにあるすべてのデータをローカルで利用できるようにしたい場合は、git fetch [repo]
. 構成を微調整していない限り、これはすべてのブランチを取得します。つまり、既存のリモート ブランチを更新し、該当する場合は新しいリモート ブランチを作成します。
(1) これは単純な標準的な場合に当てはまります。複数のリモートまたは手動で構成されたリモートを使用するより複雑なケースでは、必要なものを正確に指定するために --track オプションが必要になる場合があります。
git worktree
(2)このユースケースには新しい機能があります。ただし、2018 年初頭の時点では、まだ実験的とマークされています