2016-05-19 4 views
-1

私は、プロダクションチームに渡す一連の変更を行うテストレポを持っています。これは少し成長しました - そして我々はレポをトリミングしたいと思います。特定のディレクトリ内のすべてのファイルについて、Git - 以前の2(またはn)バージョン以外のファイルをすべて削除するにはどうすればいいですか?

  • とします。以前の3つのバージョン以外のすべてのファイルを削除し、リポジトリから参照を削除します。

私はこのdirをdirで行いたいと思います。ディレクトリ内の指定されたファイルに対してn-3より古いバージョンをgit/repo/diskから削除する。

おかげ

+0

Gitは、それぞれの_file_のバージョンではなく、_repository_のバージョンで動作します。レポの最後のnバージョンを除くすべてのバージョンを削除するのはかなり簡単です。しかし、各ファイルの最後のnバージョンを保存したい場合は、どのように見えますか?コミットにも元々10個のファイルが変更されていましたが、枝刈りアルゴリズムでは、そのうち9個が(n + 2)回変更されたため、そのコミットは保持されましたが、現在は1つのファイルしか含まれません。そのコミットに関するコミットメッセージは欺かれるでしょう。とにかく、どのくらい大きなですか? Gitは圧縮の良い仕事をしています。 – Mort

+0

レポがホストされており、約3GBです。主に画像 - 私たちはこれをやりたいのです。 – hypermails

答えて

1

あなたはこのレポの浅いクローンを作成することができます。浅いということは、最後のn回のコミットが可能であることを意味します(コミットはツリー単位で、ファイル単位ではありません)。あなたはこのクローンは、サーバーのようにしたい場合は、あなたはまた、ローカルディレクトリを使用して、同じマシンからこれを行うことができます--mirror

を追加したい場合があること
git clone --depth 2 [email protected]:dir/repo.git shallow_repo
注:
git clone --depth 2 file:///path/to/repo/ shallow_repo
注これをやっていることローカルディレクトリからは、現在のブランチのみを持ち、すべてではありません。

関連する問題