質問: **「リモートブランチ」が何を意味しているか分からないのですが、下記何れですか?** * a.「リモートブランチ」と「リモート追跡ブランチ」は同義。ローカルリポジトリ内にあり、リモートリポジトリにある参照(ポインタ)を監視している * b.「リモートブランチ」と「リモート追跡ブランチ」は異なる。ローカルリポジトリ内にある「リモート追跡ブランチ」は、リモートリポジトリ内にある「リモートブランチ」を監視し、その「リモートブランチ」が、リモートリポジトリにある参照(ポインタ)を監視している * c.上記以外 --- 「リモート参照」に関する説明が記載されていますが、これは、「リモートブランチ」の挙動に関する説明ですか? それとも「リモート参照」=「リモートブランチ」ですか? > > リモート参照は、リモートリポジトリにある参照(ポインタ)です。 > > > Git のブランチ機能 - リモートブランチ
回答: 回答としてはbが近いです。 ただし「その「リモートブランチ」が、リモートリポジトリにある参照(ポインタ)を監視している」 このニュアンスがちょっと違う感じです。 公式のドキュメントのもうちょっと後ろに書いてある通り 「リモート参照は、リモートリポジトリにある参照(ポインタ)です。具体的には、ブランチやタグなどを指します」 が正しいです。 リモートリポジトリの中には参照(ポインタ)が保存されていて、それらの参照をリモートブランチやリモートタグと呼んでいます。 ローカルリポジトリの中にも参照が存在してて、ローカルリポジトリではそれらを動かすことでローカルブランチの作成をしています。 リモート追跡ブランチはローカルリポジトリの中にあって、リモートリポジトリにある特定のリモートブランチを文字通り追跡しています。 ローカルリポジトリの中にあるローカルブランチとリモート追跡ブランチは基本的に一対一で紐づけられていてgitの操作でマージしたりしています。 ``` git branch -vv ``` とコマンドを打つと、どのローカルブランチがどのリモートブランチを追跡しているかわかります。 gitではリモート追跡ブランチとローカルブランチの差分を見ることで、ファイルの差分を確認してcommitするファイルやpullしなければいけない状態かなどを見てくれています。 リモート追跡ブランチなくても直接リモートリポジトリのリモートブランチに問い合わせすればいいんじゃない? って思うかもしれないですが、毎回毎回ネットワーク上のリモートリポジトリを問い合わせすると重いですし、 もし仮にリモートリポジトリが落ちていると、まったく差分などがわからなくなってしまうため、必要な時にリモートリポジトリを問い合わせするだけにして、基本はローカルリポジトリにあるリモート追跡ブランチを利用しています。 `git fetch`というコマンドはリモートリポジトリのリモートブランチとローカルリポジトリのリモート追跡ブランチを同期するコマンドだと思っているとよいでしょう。 ほかにもコマンドベースでどのリポジトリのどのブランチを操作しているのか把握すると理解がしやすいと思います。