git のコマンド入力をサボったら、以下のようなメッセージが。
$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
大抵は、フルで(refspec までは書かないけど) 入力していたけど、安全に楽できそうな気がしたので、設定値を調べてみた。
push.default の設定値
nothing
サボれないようにするための設定。必ず指定する必要がある。
matching
現行バージョンのデフォルト。ローカルとリモートで同じ名前のブランチがあったら、根こそぎ push する。カレントだけではないので、意図しないものまで push されちゃう。
upstream(旧名 tracking)
カレントブランチに追跡ブランチが設定されている場合に、追跡ブランチに対して push する。
simple
Git 2.0 でデフォルトになる予定のもの。カレントブランチに追跡ブランチが設定されている、かつローカルとリモートのブランチ名が同じである場合に、追跡ブランチに対して push する。
current
カレントブランチと同名のリモートブランチがあれば、そこに push する。
これまで事故は起きなかったけど、今後は追跡ブランチの設定をしようかな〜 と思う次第。追跡ブランチの設定方法は、幾つかあるので、現況に応じて使い分ける。
ローカルブランチ作成のタイミングで設定
$ git checkout -t origin hogehoge
or
$ git checkout --track origin hogehoge
リモートブランチ作成のタイミングで設定
$ git push -u origin hogehoge
or
$ git push --set-upstream origin hogehoge
既に存在するブランチに設定する
Git 1.7.x スタイル
$ git branch --set-upstream hogehoge origin/hogehoge
Git 1.8.x スタイル
カレントブランチが hogehoge の場合
$ git branch -u origin/hogehoge
or
$ git branch --set-upstream-to=origin/hogehoge
ローカルブランチも指定する場合、
$ git branch -u origin/hogehoge hogehoge
or
$ git branch --set-upstream-to=origin/hogehoge hogehoge
もっと前?
$ git branch -t hogehoge origin/hogehoge
or
$ git branch --track hogehoge origin/hogehoge
といろいろあるけど、track という言葉は使わず upstream へ向かっているようなので、これから覚えるならそっちなんでしょうね。