pull は引数なしが推奨です。 pull は誤った (意図しない) リモートリポジトリやブランチを指定したときも動いて、そのリポジトリのリモートブランチから展開されているワークツリーへのマージとして働きます。一方、引数省略するとリモート追跡ブランチから自動的に pull 対象を決定します。こちらのほうが一般的に事故は少ないです。
こちらは git のバージョンしだいで推奨が変わって、次のようにわかれます。
引数なしが推奨。引数なしの場合、default の挙動となり、simple が選択されます。
グローバルの gitconfig (リポジトリごとの設定ではなく $HOME/.gitconfig) を default: simple
に設定しましょう。
git config --global push.default simple
upstream を...というよりも、git のバージョンを最新に上げましょう。
ちなみに、必要ないのに引数を指定した場合、意図しないブランチに対して push をしかけてリモートブランチの内容を壊します (その名前のローカルブランチにまだ送ってはいけない変更が入っていた場合。current ブランチを指定リモートブランチに push するわけではないです)。ご注意を。
また、古いバージョンにおいてもっとも危険なのは、git push -f
(引数指定なし) です。git push
の正しい意味は、手元にあるブランチを 全て リモートに対して push するというものです。v1.8 以降は push.default
のオプションが設定されていない場合に警告を出してくれますが、v1.8 未満は確認なくローカルブランチの同名のリモートブランチに対して push をしかけます。force オプションがついた場合、リモートの内容と歴史がコンフリクトしたときにはローカルの歴史を正として強制上書きをします。この場合、ブランチの生成された経緯などによらず名前でぶつけて対応するものを上書きとなります。もう要らなくなっていく知識ですので、覚えなくていいように一切の躊躇なく最新の git を使うようにしましょう。