ローカルとリモート

まず、通常リモートブランチと呼ばれているものが「リモート追跡ブランチ」のことがある。「リモートに対して云々」は、ほんとのリモートサーバー側のこともあれば「リモート追跡ブランチ」のこともある。

登録されているリモートの一覧は:

  • 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ブランチ で削除