残念ながら、この特定のシナリオに似たものは見つかりませんでした。
私には、2007 年半ばまで遡る 500 以上のブランチ、500 以上のタグなど、膨大な履歴を持つ Git リポジトリがあります。これには約 19,500 件のコミットが含まれています。2010 年 1 月 1 日より前の履歴をすべて削除して、サイズを小さくし、扱いやすくしたいと考えています (履歴の完全なコピーをアーカイブ リポジトリに保存します)。
新しいリポジトリのルートにしたいコミットはわかっています。しかし、そのコミットからリポジトリを切り捨てる正しいgit mojoがわかりません。
git filter-branch
移植を伴う作業が必要になるでしょう。また、保持したい 200 以上のブランチをそれぞれ個別に処理し、リポジトリをパッチで元に戻す必要があるかもしれません (その方法はわかっています)。
誰かこのようなことをしたことがありますか? もしそれが問題なら、私は git 1.7.2.3 を持っています。
ベストアンサー1
Gitリポジトリのスペースを空けたいが、コミットをすべて再構築(リベースまたはグラフト)したくない、また完全なリポジトリを持っている人からのプッシュ/プル/マージが可能な場合は、git クローン 浅いクローン ( --depthパラメータ)。
; Clone the original repo into limitedRepo
git clone file:///path_to/originalRepo limitedRepo --depth=10
; Remove the original repo, to free up some space
rm -rf originalRepo
cd limitedRepo
git remote rm origin
次の手順に従って、既存のリポジトリを浅くすることができます。
; Shallow to last 5 commits
git rev-parse HEAD~5 > .git/shallow
; Manually remove all other branches, tags and remotes that refers to old commits
; Prune unreachable objects
git fsck --unreachable ; Will show you the list of what will be deleted
git gc --prune=now ; Will actually delete your data
すべての git ローカル タグを削除するにはどうすればいいですか?
Ps: Git の古いバージョンでは、浅いリポジトリからのクローン/プッシュ/プルはサポートされていませんでした。