Gitのおすすめ設定の1つに git pull
時にfast-forward onlyで実行する、というものがあります。
~/.gitconfig
[pull]
ff = only
検証した環境
1 | git | 2.32.0 |
git pullにfast-forward onlyを設定する
git pull
はデフォルトだと
fast-forward
を実行しようとして、出来なかった場合にマージコミットを作成しようとします。
↑ の動画の7,8秒辺りの部分でマージコミットが作られているのが分かります。
fast-forward
してくれるのはありがたいけど、
マージコミットを作るつもりがなかったのに作られてしまった、となると面倒ですよね。
そこで 意図しないマージコミットを作らないよう回避する手段が--ff-only
というオプションになります
—ff-onlyを設定する
git pull
時に--ff-only
オプションを設定すると、
fast-forwardでマージできる状況ではfast-forwardでのmergeを、そうでなければfetchのみ行う
となります。
↑の場合先ほどと違ってmergeが行われず、最終的にaborting.
(中断)となります。
$ git pull --ff-only origin HEAD
From ssh://github.com/meganedogYuu/pr-sample
* branch HEAD -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting. #fast-forwardが実行出来なかったため中断された
—ff-onlyをデフォルトで実行されるようにする
git pull
時に--ff-only
を設定すると便利ですよー、という事をつらつらと書いたわけですが、
エンジニアたるもの良さそうなオプションは当然デフォルトで設定したくなります。
デフォルト設定にする場合~/.gitconfig
を編集するか
~/.gitconfig
[pull]
ff = only
下記コマンドを実行する事で設定できます。
$ git config --global pull.ff only