[解決済み] このGitの警告にはどう対処すればよいのでしょうか?"異なるブランチを調整する方法を指定せずにプルすることは推奨されません"
質問
の後に
git pull origin master
次のようなメッセージが表示されます。
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.
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 51.49 KiB | 850.00 KiB/s, done.
すると、正常にプルされました。しかし、それでも、このメッセージには疑問があります。
この場合、どうするのがベストなのでしょうか?
どのように解決するのですか?
<ブロッククオートデフォルトのモードでは、git pull は git fetch と git merge FETCH_HEAD の省略形です。
を行うと
git pull origin master
,
git pull
はマージを実行し、多くの場合、マージコミットを作成します。したがって、デフォルトでは、リモートからのプルは
ではない
は無害な操作です。以前は存在しなかった新しいコミットSHAハッシュ値を作成することができます。この挙動はユーザーを混乱させます。なぜなら、一見無害なダウンロード操作に見えるものが、実際にはコミット履歴を予測不可能な方法で変更してしまうからです。
これを回避するためには
git pull --ff-only
(そうでない場合もあります。)どれがあなたの要件に合うか、読んでみてください。
と
git pull --ff-only
の場合、Git は新しいコミットを作成せずに「早送り」できる場合にのみブランチを更新します。これができない場合は
git pull --ff-only
は、単にエラーメッセージを表示して終了します。
Gitクライアントを設定することで、常に
--ff-only
をデフォルトで使用することで、コマンドラインフラグを忘れてもこの動作になります。
git config --global pull.ff only
注
--global
フラグは、あなたのマシン上のすべてのリポジトリに対して変更を適用します。今いるリポジトリに対してのみこの動作をさせたい場合は、このフラグを省略します。
より引用
こちら
この警告は Git 2.27 で追加されました。
警告の完成形はこのようなものです。
分岐を調整する方法を指定せずにプルすることは は推奨されません。このメッセージは、次のいずれかの方法で消すことができます。 コマンドを実行します。
git config pull.rebase false # マージ (デフォルトの戦略)
git config pull.rebase true # リベース
git config pull.ff only # 早送りのみ
git config" を "git config --global" に置き換えることで、デフォルトを設定することができます。 の優先順位は、すべてのリポジトリに適用されます。また、--rebase、--no-rebase を渡すこともできます。 または--ff-onlyを指定すると、設定されたデフォルトを上書きすることができます。 を起動します。
この警告では、オプションとして3つのコマンドが提示されていますが、これらはすべて警告を抑制するものです。しかし、それらは異なる目的を果たす。
git config pull.rebase false # merge (the default strategy)
これはデフォルトの動作を維持し、警告を抑止します。
git config pull.rebase true # rebase
これは実際にはリモートブランチの上にコミットするもので、ローカルとリモートの両方でひとつのブランチを維持します (デフォルトの動作では、ローカルとリモートのふたつのブランチが存在し、それらを結合するためにマージを実行します)。
git config pull.ff only # fast-forward only
これは、ローカルブランチを fast-forward できる場合にのみ pull を実行します。そうでない場合は、単にエラーメッセージを出して中断します (そしてコミットも作成しません)。
更新しました。
Git 2.29以降を使用している場合は、Git 2.29以降を使用している場合は、Git 2.29以降を使用している場合は、以下のように
pull.ff
から
false
,
true
または
only
をクリックすると、警告が消えます。
git config pull.ff true
true
- これはデフォルトの動作です。プルは可能であれば早送りされ、そうでなければマージされます。
git config pull.ff false
false
- Pullは決して早送りされず、常にマージが作成されます。
git config pull.ff only
only
- 可能な場合は早送りを行い、不可能な場合はエラーメッセージとともに操作を中断する。
注 に注目してみてはいかがでしょうか。 VonC の回答 こちら をクリックすると、今後のアップデートでこの機能が変更されることをお知らせします。
関連
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】git revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] マージされたGitブランチをすべて削除するにはどうすればよいですか?
-
[解決済み] Git のブランチの一覧を最新のコミット順に表示するにはどうしたらよいですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] どの Git ブランチがどのリモート/アップストリームブランチを追跡しているかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み】Git Extensions。Win32 エラー 487: cygwinのヒープ用に領域を確保できなかった、Win32エラー0
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] 現在の支店にはトラッキング情報がありません
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] git pull --rebase はいつ使うべきですか?
-
[解決済み】git fast-forwardingとは?[重複あり]
-
[解決済み] git pull --rebaseとgit pull --ff-onlyの違いについて