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自身もわかりやすさを取り入れているという印象を持ちました。

