git pullすると「warning: Pulling without specifying how to reconcile divergent branches is
discouraged.」という警告メッセージが発生するようになりました。弊社内でも戸惑うメンバーがいましたので、gitの挙動を踏まえながら、この警告メッセージについて調査してみたいと思います。この警告メッセージは、gitのバージョン「git version 2.27.0」から発生するようになりました。
用語のおさらい
gitを利用している場合、ローカルリポジトリとリモートリポジトリという2種類のリポジトリを使い分けながら、作業をおこなっていると思います。ローカルリポジトリは作業者のPCにあるリポジトリ、リモートリポジトリは共用のサーバに設置されているリポジトリです。普段の作業イメージでは、ローカルで追加した機能などをローカルリポジトリへ反映して、リモートリポジトリへ取り込むというような流れで作業をしています。
ローカルリポジトリには、以下のものが含まれています。
- ワーキングツリー ・・・ 変更しているファイルのこと
- インデックス ・・・ git add で管理しているもの
- ローカルブランチ ・・・ 変更した内容を反映しているブランチ
- リモート追跡ブランチ(リモートのコピー)・・・リモートブランチのコピー
git pullの挙動について
git pull
実行した際には、下記の動作をします。
git fetch
を実行する。- 現在のブランチに対して、 事前に
git fetch
で取得したHEADをマージするようにgit merge
を実行する。
git pull --rebase
を実行した際には、上記.2の挙動がmerge
ではなく、reabse
を使ったものになります。
git version 2.27.0では、pull.rebase
の設定がなくて且つ pull
実行時のオプションも指定されなかった場合にはマージコミットを利用して解決するという挙動だったのですが、この挙動が操作に慣れていないユーザが困ることが多いようで、2.27.0では、明示的に指定してする方針になったようです。今までの挙動で問題ない方は、git config --global pull.rebase false
コマンドを実行して、gitconfigに設定してしまって良い気がします。
おわり
今回は、gitのバージョンアップで発生した警告について記載しました。最近では、エンジニアやデザイナ、その他など非常に多くの人がgitクライントなどを利用していることもあり、git自身もわかりやすさを取り入れているという印象を持ちました。