1. ホーム
  2. ギット

[解決済み】Gitのfetchやpullで自動プルーニングを行う。

2022-04-15 03:16:59

質問

もし誰かが作業が終わったからとリモートブランチを削除したら、私は知らないうちに git fetch --prune で、結局は削除されたブランチをプッシュバックすることになります。

フェッチ/プル時に毎回指定しなくても、Git にプルーンモードを使わせるための実行可能な解決策はありますか?

解決方法は?

git 1.8.5 (2013年第4四半期) より :

<ブロッククオート

" 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 をまだ保持していません)、ユーザーの同意なしに刈り込みを行うことは避けたいので、この設定はデフォルトではオンになっていません。