グローバル ファイルをいじっていたら.gitconfig
、次のような結果になったことに気付きました。
[branch]
autosetupmerge = always
autosetuprebase = always
それは直感に反するように思えましたが、少し調べた後でも、両方が必要なのか、それとも削除してautosetupmerge
保持するだけで十分なのか、まだわかりませautosetuprebase
ん。私が取り組んでいるほとんどのプロジェクトでは、ダウンストリームからアップストリームへの直接的なフローがあるため、ブランチを扱うときは通常、リベースが好まれます。
ベストアンサー1
ここで直感に反するのは、これらの設定の名前です。同じ機能を参照しているように見えますが、実際にはそうではありません。
autosetupmerge
およびがオプションを暗示するgit branch
かどうかを制御します。つまり、 の設定により、git checkout -b
--track
always
git checkout branchname
branchname
リモートに存在するがローカルに存在しない場合は、branchname
リモートの対応するものを追跡するgit checkout -b newbranch
newbranch
このコマンドを発行する前にチェックアウトしたブランチを追跡する新しいブランチを作成します。
autosetuprebase
は、新しいブランチを にリベースするように設定するかどうかを制御します。つまりgit pull
、 をalways
設定すると、 がマージではなくリベースを常に実行するようにブランチが設定されますgit pull
。(このオプションを変更しても、既存のブランチの構成は保持されることに注意してください。)
したがって、 と の両方を持つことは完全に理にかなっていますautosetupmerge = always
。autosetuprebase = always
実際、私もそれを持っています。