3

X日より古いコミットを削除するにはどうすればよいですか?

私がやりたい理由は、リポジトリがかなり大きくなり、フィルタリングとgcが役に立たなくなり、5年以上前のコミットが不要になったためです。このリポジトリを使用している開発者は4人だけです。

これを自動化できるスクリプトはありますか?

4

1 に答える 1

1

2つのオプションが思い浮かびます:

  • --depth=N引数を使用して元のリポジトリを複製して、新しいリポジトリを作成します。Nこれにより、履歴の最後のコミットのみを保持する新しい履歴が作成されます。その後、すべての開発者がこの新しいリポジトリに切り替えます。

    必要なものを見つけるNには、次を使用できます

    git log --format=oneline HEAD@{5 years ago} | wc -l
    

    ただし、これにより、すべてのコミット SHA1 が書き換えられます。

  • SHA1 を保持するには、このブログ投稿に従ってgit replace、履歴を 2 つに分割します。

于 2013-02-17T14:03:23.593 に答える