回答:
"
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をまだ保持していません)、ユーザーの同意なしにプルーニングしたくないため、この構成はデフォルトではオンになりません。
git config --global fetch.prune true
git config --global fetch.prune trueすべてのGitリポジトリで常に使用--pruneするgit fetchにgit pullは:
git config --global fetch.prune true
この上記のコマンドは、グローバルGit構成(通常は~/.gitconfig)に次の行を追加します。git config -e --globalグローバル構成を表示するために使用します。
[fetch]
prune = true
git config remote.origin.prune true常に--prune1つのリポジトリからのみ:
git config remote.origin.prune true
#^^^^^^
#replace with your repo name
この上のコマンドは、ローカルGit構成(通常は.git/config)の下の最後の行を追加します。git config -eローカル構成を表示するために使用します。
[remote "origin"]
url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
fetch = +refs/heads/*:refs/remotes/origin/*
prune = true
--global2番目のコマンド内で使用することも--local、最初のコマンド内で使用することもできます。
git config --global gui.pruneDuringFetch true使用git guiする場合は、次の方法でも興味があります。
git config --global gui.pruneDuringFetch true
追加します:
[gui]
pruneDuringFetch = true
からの対応するドキュメントgit help config:
--global書き込みオプションの場合:
~/.gitconfigリポジトリ.git/configではなくグローバルファイルに書き込み$XDG_CONFIG_HOME/git/config、このファイルが存在し、~/.gitconfigファイルが存在しない場合はファイルに書き込みます。
--local書き込みオプションの場合:リポジトリ
.git/configファイルに書き込みます。これがデフォルトの動作です。
fetch.prunetrueの場合、fetchは
--pruneコマンドラインでオプションが指定されたかのように自動的に動作します。もご覧くださいremote.<name>.prune。
gui.pruneDuringFetchフェッチの実行時にgit-guiがリモート追跡ブランチをプルーニングする 場合は「true」。デフォルト値は「false」です。
remote.<name>.prunetrueに設定した場合、デフォルトでこのリモートからフェッチすると、リモートに存在しなくなったリモートトラッキング参照も削除されます(
--pruneコマンドラインでオプションが指定された場合と同様)。fetch.pruneもしあれば、設定を上書きします。
git config -e、git config -e --globalまたこの投稿から学んだところです。vimgit configファイルへの特定のパスを指すコマンドを入力する必要がなくなり、その特定のパスが何であるかを考える必要がなくなりました。
git config --global fetch.prune true(関連ドキュメントへのリンク付き)。
いつでも使いたいprune場合はfetch、エイリアスを使用することをお勧めします。
入力git config -eしてエディターを開き、特定のプロジェクトの構成を変更して、次のようなセクションを追加します
[alias]
pfetch = fetch --prune
git pfetchプルーンでフェッチするときは自動的に行われます。
pullとfetch、その剪定バージョンを。実際、私は(まだ試していませんが)fetch = fetch --pruneエイリアスセクションに直接書き込むことができるpullため、プルーニングされたフェッチを自動的に使用すると
fetch = fetch --prune動作しませんが、エイリアスでコマンドを上書きしても動作しませんでした。私は古いバージョン(1.7.2.5)を使用していますので、これは可能性があり
git fetch!以下の私の回答を