git pullした時にwarningが出力された

Posted by ちょいハック on Saturday, May 15, 2021

目次

概要

git pull した時に警告が出るようになりました。

$ git pull
warning: Pulling without specifying how to reconcile divergent branches is discouraged.
You can squelch this message by running one of the following commands sometime before your next pull:

  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

You can replace "git config" with "git config --global" to set a default preference for all repositories.
You can also pass --rebase, --no-rebase, or --ff-only on the command line to override the configured default per invocation.

Gitの2.27.0以降から出るようになったようです。 現在の私のGitバージョン;

$ git --version
git version 2.29.2

日本語に翻訳したバージョン:

警告:分岐したブランチを調整する方法を指定せずにpullすることはお勧めしません。
次のpullの前に、次のコマンドのいずれかを実行することで、このメッセージを抑制できます。

   git config pull.rebase false # マージ(デフォルトの戦略)
   git config pull.rebase true  # リベース
   git config pull.ff only      # fast-forwardのみ

「git config」を「git config --global」に置き換えることで、全リポジトリにデフォルトを設定できます。
コマンドラインで--rebase、-no-rebase、または--ff-onlyを渡すことで、起動毎にデフォルト設定を上書きできます。

git merge の選択肢

git pullした場合、remote branchからlocal branchにマージしてくれます。
git merge する場合の挙動を設定できます。

git config pull.rebase false

これはデフォルトの挙動で、これまでの挙動と同じになります。
rebaseせずにfast-forward可能な場合はfast-forwardし、そうでない場合はmerge commitします。

git config pull.rebase true

git pull --rebaseを行った場合と同じになり、merge commitが作成されずに、コミット履歴が一直線になります。

git config pull.ff only

--ff-only optionをつけた場合と同じ挙動になります。
fast-forward可能な場合はfast-forwardし、そうでない場合はmerge,rebaseせずにエラー終了します。