まず、通常リモートブランチと呼ばれているものが「リモート追跡ブランチ」のことがある。「リモートに対して云々」は、ほんとのリモートサーバー側のこともあれば「リモート追跡ブランチ」のこともある。
登録されているリモートの一覧は:
- git remote -v (--verbose)
ちなみに、git remote show はあるが、名前だけ。`git remote -v` = `git remote show -v`
通常 origin と名付けられるのは、ローカルにある「リモート追跡ブランチ」で、git が特別扱いするブランチ。ブランチだから、実体はラベルで、.git/refs/remotes/ の下にラベルがある。例えば、.git/refs/remotes/origin/ の下にいくつかのブランチラベルががある。
リモートブランチは、.git/refs/remotes/* のラベルを意味していることが多い。ほんとのリモートと区別しないと“わけわからん”となる。
gitのコマンド体系はひどいものだが、
- push と pull が対称性がない。実際は、push と fetch がほぼ対称。
- push, fetch でオブジェクトDBの部分転送が行われる。そのコピーコマンドが git push リモート名 fromブランチ:toブランチ
- copy local/fromブランチ リモート名/toブランチ が push リモート名 fromブランチ:toブランチ
- 略記が git push リモート名 共通ブランチ名
- 別な略記が git push リモート名 空ブランチ:toブランチ で削除