8046


スタックオーバーフロー向けなのか分かりませんが。質問してみます。

私は、いつも`git config --global fetch.prune true`しているのですが。  
そもそもなぜrefsが残るのでしょう。そして、なぜオプション扱いなのでしょうか。  
refsを残したほうがいい場合というのが思いつきません。

というのも「pruneすれば消える」という情報は直ぐ見つかるのですが  
「こういう時は、pruneしてはいけない！」という情報が見つからず、おまじない化していることに不安を覚えました。

pruneしてはいけない代表的な事例とは、どういう状況でしょうか。


CC BY-SA 3.0
2015-03-18T04:51:56.947
8044
2015-03-18T05:15:21.437
8335
question
git
git fetch に、 --prune がオプションなのは何故？


代表的かどうかはわかりませんが、例えばこんなケースでしょうか?

  1. 隣の人からあるブランチを引き継ぎたいので、（originを経由せずに）その人のレポジトリをremoteとして追加し、直接fetch
  2. 隣の人は、渡し終わったのでローカルブランチを削除
  3. 取得したリモートブランチからローカルブランチを作成する前に、別のブランチを更新しようとしてもう一度fetch
  4. pruneしていたので、先に取得したリモートブランチも消えてしまう

デフォルトがpruneになっていないのは、安全側に倒すためではないでしょうか。


CC BY-SA 3.0
2015-03-18T05:07:24.477
8046
2015-03-18T05:07:24.477
3066
8044
answer


[fetch: make --prune configurable · 737c5a9 ·
git/git](https://github.com/git/git/commit/737c5a9cde708d6995c765b7c2e95033edd0a896)

> Since --prune is a potentially destructive operation (Git doesn't  
>  keep reflogs for deleted references yet), we don't want to prune  
>  without users consent, so this configuration will not be on by  
>  default.

とのことで、安全性を考慮してこのようになっているようです。


CC BY-SA 3.0
2015-03-18T05:15:21.437
8048
2015-03-18T05:15:21.437
3313
8044
answer