技術的には、Git リポジトリには実際には「リモート」のものはまったくありません1。別の異なるリポジトリの名前に対応する必要があるローカル名だけがあります。名前origin/whateverが付けられたものは、最初はクローン元のレポのものと一致します。
git clone ssh://some.where.out.there/some/path/to/repo # or git://some.where...
他のリポジトリのローカル コピーを作成します。途中で、そこにあったすべてのブランチと、それらが参照するコミットを記録し、名前の下にそれらをローカル リポジトリに貼り付けますrefs/remotes/origin/。
git fetch「some.where.out.thereの私のコピー」を更新する前に、または同等のものをどれだけ前に行ったかに応じて、ブランチが変更され、新しいブランチが作成され、一部が削除される場合があります。あなたがgit fetch(またはgit pull実際にはフェッチとマージである)行うと、リポジトリは新しい作業のコピーを作成し、必要に応じてすべてのrefs/remotes/origin/<name>エントリを変更します。すべてが一致するのは、その ingの瞬間ですfetch(まあ、それと最初のクローン、およびいくつかのpushing のケースも - 基本的に Git がチェックする機会を得たときはいつでも - ただし、以下の警告を参照してください)。
Git では通常、自分自身refs/heads/<name>を just<name>と呼び、リモートのものをorigin/<name>と呼びます。どれがどれであるかが明らかであるため、すべてが機能します。自明なブランチ名を作成することは時々可能ですが、それが起こるまで心配する必要はありません。:-) Git にわかりやすい最短の名前を付けるだけで、そこから移動できます: origin/master「前回チェックしたときに master があった場所」とmaster「私が行ったことに基づいて、master がここにいた場所」です。 . 必要に応じて実行git fetchして、「マスターがそこにある場所」で Git を更新します。
警告: 1.8.4 より古いバージョンの Git にgit fetchは、「マスターがそこにある場所」を更新しないモードがいくつかあります (より正確には、リモート追跡ブランチを更新しないモード)。git fetch origin、またはgit fetch --all、または単にgit fetchを実行すると、更新されます。ランニングgit fetch origin master はしません。残念ながら、この「更新しない」モードは通常の によってトリガーされgit pullます。(これは主に小さな煩わしさであり、Git 1.8.4 以降で修正されています。)
1さて、 「リモート」と呼ばれるものがあります。でもそれもローカル!名前originは、Git が「リモート」と呼ぶものです。基本的には、クローンを作成したときに使用した URL の短い名前です。originインのorigin/master由来でもあります。この名前origin/masterはリモート トラッキング ブランチと呼ばれ、特に古いドキュメントや非公式のドキュメントでは、「リモート ブランチ」と短縮されることがあります。