Gitリポジトリから古い履歴を削除するにはどうすればいいですか? 質問する

Gitリポジトリから古い履歴を削除するにはどうすればいいですか? 質問する

残念ながら、この特定のシナリオに似たものは見つかりませんでした。

私には、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 の古いバージョンでは、浅いリポジトリからのクローン/プッシュ/プルはサポートされていませんでした。

おすすめ記事