
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

.png?table=block&id=b6fffbcf-0e12-4cbe-bf57-af0981a9c67d&cache=v2)
댓글