Gitのpullコマンドの挙動を変更する
特定のバージョンから警告が出るようになっている
Git 2.27.0以降で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.
メッセージにあるように3つのオプションのうち1つを選択しないと警告が表示され続ける。
リベースせずマージする
git config pull.rebase false
デフォルトの挙動で、リベースを行わず、分岐がある場合はマージコミットを作成する。
gitGraph
commit id: "initial"
branch origin/develop
checkout origin/develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
checkout main
branch develop
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
このコミット状況でgit pull
を実行すると、
gitGraph
commit id: "initial"
branch origin/develop
checkout origin/develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
checkout main
branch develop
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
merge origin/develop
になる。
リベースしてマージする
git config pull.rebase true
ローカルの変更をリベースをしてマージコミットを作成しない。
gitGraph
commit id: "initial"
branch origin/develop
checkout origin/develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
checkout main
branch develop
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
このコミット状況でgit pull
を実行すると、
gitGraph
commit id: "initial"
branch origin/develop
checkout origin/develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
branch develop
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
になる。
ファストフォワードのみ許可する
git config pull.ff only
ローカルで変更されておらずファストフォワードのみでリモートの変更を取り込める場合のみプルできる。
gitGraph
commit id: "initial"
branch develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
branch origin/develop
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
このコミット状況でgit pull
を実行すると、
gitGraph
commit id: "initial"
branch develop
commit id: "commit-1"
commit id: "commit-2"
commit id: "commit-3"
commit id: "commit-4"
commit id: "commit-5"
commit id: "commit-6"
branch origin/develop
になる。develop
ブランチはorigin/develop
と完全に同じ位置を指す。