リモート追跡ブランチとアップストリームブランチ(=上流ブランチ)は別物です。
これらを理解するためには、「リモート追跡ブランチ」と「追跡ブランチ」と「アップストリームブランチ」の3つを知る必要があります。
上記を読めば違いが理解できるかと思います。その違いを以下に示します。
私の現状での認識では、リモート追跡ブランチは$git fetchしたときに手に入るもので、
git clone すると自動的にローカルに「リモート名/ブランチ名」の一式が作成されますが、これらがリモート追跡ブランチです。リモートにあるすべてのブランチ(の最新コミット)を指しているブランチです。リモートが更新された場合、git fetch を実行するとリモート追跡ブランチが更新されます。
アップストリームブランチは上流という意味からして、「リモート追跡ブランチはローカルブランチのアップストリームブランチであり、
少し誤解があります。確かに特に指定をしない限りは、「リモート追跡ブランチ」がローカルブランチの「アップストリームブランチ」として設定されますが、リモート追跡ブランチとアップストリームブランチが常に一致するとは限りません。
git-scm ドキュメントの「追跡ブランチ」の節の第2段落を参照してください。
あるリポジトリをクローンしたら、自動的に master ブランチを作成し、origin/master を追跡するようになります。 しかし、必要に応じてそれ以外の追跡ブランチを作成し、origin 以外にあるブランチや master 以外のブランチを追跡させることも可能です。 シンプルな方法としては、git checkout -b [branch] [remotename]/[branch]
を実行します。
例えば origin リモートの master ブランチを使って開発している場合、
- (1) ローカルのmaster ブランチ
- (2) ローカルの origin/master ブランチ
- (3) リモートの master ブランチ
という構成になりますが、「origin/master」のように「リモート名/ブランチ名」となっているローカルブランチ、つまり (2) のようなものは「リモート追跡ブランチ」です。
また、(2) がアップストリームブランチになることもありますが、(1) が追跡しているブランチのことをアップストリームブランチと呼びます。なお、(1) のように「アップストリームブランチを持つブランチ」のことを「追跡ブランチ(=追跡先を持っているブランチ)」と呼びます。(ややこしいですが、追跡ブランチが何を意味するかについては歴史的経緯により変更されています)
リモートブランチはリモート追跡ブランチのアップストリームブランチである」という認識なのですが合っていますでしょうか?
いいえ。そのような表現はしません。アップストリームブランチは、追跡ブランチに対して使われる表現です。つまり上記の (1)=>(2) をそれぞれ「追跡ブランチ」と「アップストリームブランチ」と呼ぶのであって、(2)=>(3) を「リモート追跡ブランチ」と「アップストリームブランチ」と呼ぶわけではありません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。