回答:
"
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
常に--prune
1つのリポジトリからのみ:
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
--global
2番目のコマンド内で使用することも--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.prune
trueの場合、fetchは
--prune
コマンドラインでオプションが指定されたかのように自動的に動作します。もご覧くださいremote.<name>.prune
。
gui.pruneDuringFetch
フェッチの実行時にgit-guiがリモート追跡ブランチをプルーニングする 場合は「true」。デフォルト値は「false」です。
remote.<name>.prune
trueに設定した場合、デフォルトでこのリモートからフェッチすると、リモートに存在しなくなったリモートトラッキング参照も削除されます(
--prune
コマンドラインでオプションが指定された場合と同様)。fetch.prune
もしあれば、設定を上書きします。
git config -e
、git config -e --global
またこの投稿から学んだところです。vim
git 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
!以下の私の回答を