作業が終了して知らないうちに誰かがリモート ブランチを削除した場合、私は何もせずgit fetch --prune
、最終的には削除されたブランチをプッシュバックします。
毎回指定しなくても、フェッチ/プル時に Git にプルーニング モードを強制的に使用させるための実行可能な解決策はありますか?
ベストアンサー1
"
git fetch
" (したがって "git pull
" も) は、"fetch.prune
" および " " 構成変数をチェックし、" " コマンドライン オプションが指定されたremote.*.prune
かのように動作するようになりました。--prune
つまり、remote.origin.prune を true に設定すると、次のようになります。
git config remote.origin.prune true
またはgit fetch
はgit pull
自動的に剪定されます。
注: Git 2.12 (2017 年第 1 四半期) では、この構成に関連するバグが修正され、git remote rename
誤動作が発生するようになります。
「Git リモートの名前を変更するにはどうすればよいですか?「」。
詳しくはこちらコミット 737c5a9:
"
git fetch --prune
" がなければ、相手側がすでに削除したブランチのリモート追跡ブランチは永久に残ります。
常に " " を実行したい人もいますgit fetch --prune
。常にプルーニングするか、特定のリモートからフェッチするときにプルーニングしたいユーザーに対応するために、2 つの新しい構成変数 "
fetch.prune
" と "remote.<name>.prune
" を追加します。
- "
fetch.prune
" を使用すると、すべてのフェッチ操作に対してプルーニングを有効にすることができます。- 「
remote.<name>.prune
」を使用すると、リモートごとに動作を変更できます。後者は当然前者を上書きし、
--[no-]prune
コマンドラインからのオプションは設定されたデフォルトを上書きします。これは潜在的に破壊的な操作であるため
--prune
(Git は削除された参照の reflog をまだ保持していません)、ユーザーの同意なしにプルーニングすることは望ましくありません。そのため、この構成はデフォルトではオンになりません。