X日より古いコミットを削除するにはどうすればよいですか?
私がやりたい理由は、リポジトリがかなり大きくなり、フィルタリングとgcが役に立たなくなり、5年以上前のコミットが不要になったためです。このリポジトリを使用している開発者は4人だけです。
これを自動化できるスクリプトはありますか?
2つのオプションが思い浮かびます:
--depth=N
引数を使用して元のリポジトリを複製して、新しいリポジトリを作成します。N
これにより、履歴の最後のコミットのみを保持する新しい履歴が作成されます。その後、すべての開発者がこの新しいリポジトリに切り替えます。
必要なものを見つけるN
には、次を使用できます
git log --format=oneline HEAD@{5 years ago} | wc -l
ただし、これにより、すべてのコミット SHA1 が書き換えられます。
SHA1 を保持するには、このブログ投稿に従ってgit replace
、履歴を 2 つに分割します。