
git pull
をする場合、pull
方式を指定しろとエラーが出ます…git pull
はgit fetch
とmerge
を合わせたコマンドです。その中でmerge
の方法を指定しろというエラーのようです。各オプションの意味を調べて、設定までしてみましょう。❗️従来のpull方式
既存の
pull
の場合、pull
を受けると不要なmerge commit
が生成されます。まるで3-way merge
のような形です。(下の図の赤色のcommit
が不要なmerge commit
です。
この方式が3つのオプションのうち、最初の選択肢に該当します。
✅ git pull --ff-only
pull
するリモートリポジトリのブランチとローカルリポジトリのブランチが fast-forward 関係の場合のみ pull
を許可します。二つのブランチがfast-forward関係ということは、どちらか一方を意味します。
二つのブランチが分かれた
commit
を基準に- ローカルリポジトリにのみ
新しいコミット
があり、リモートリポジトリにはありません。
- リモートリポジトリにのみ
新しいコミット
があり、ローカルリポジトリにはありません。
最初の場合は
pull
を受ける必要がないので、2番目の場合だけpull
が可能ということになります。もし、リモートリポジトリの新しいcommit
が存在し、git pull
をしていない状態でローカルリポジトリに新しいcommit
をしたら、git
はpull
を許可しないでしょう。✅ git pull --rebase
pull
の時にrebaseを使うと下記のように動作します。rebaseとは? 新しいブランチが開始された分岐点commitが存在する。この分岐点を基準ブランチの最新のcommitに変更する作業。
- ローカルブランチの開始点をリモートブランチの最後の
commit
に移動するようです。 その過程でconflictが発生した場合、それを解決する必要があるようです。
git history
が綺麗になるという利点がありますが、不用意に使う場合、別途の通知なしにgit historyを永久に変更することができるので、ff-only方式をもっとおすすめするそうです。

✅ ff-only オプションをデフォルトに設定
git config pull.ff only
댓글