2012-10-26 30 views
6

私は3年以上にわたり大きなリポジトリを所有しています.1年以上前の変更履歴を削除したいと思います。これは可能ですか? git rebaseを使うことができますが、どうしたらいいですか?Git削除履歴コミット

+0

あなたの変更を保存するために作られました。履歴を削除すると、どのような影響がありますか? –

+0

私の歴史は大きすぎます.git dirは400 MBを超えています。すべてのクローンでこの履歴をすべてダウンロードする必要があります:( – paweb

+0

可能な複製:[gitリポジトリから古い履歴を削除するにはどうすればいいですか? /stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –

答えて

3

正確な状況を例として使用してgit replaceというthis article from the Pro Git bookという黒い魔法を調べます。基本的に、新しいルートとして動作させたいというヒストリのポイントを見つけることができれば、あたかもそれが薄い空気から作られたかのように、親を持たないコミットに置き換えることができます。元のツリーを1台のマシンに保存することもできます。必要に応じて履歴を簡単に復元できます。

git rebase(とその点についてはgit replace)の問題は、ブランチを含めてツリー全体を書き換えて、すべてが異なるコミットを指していることにあります。これはまた、あなたのチームの他の人が変更をマージすることを困難にする結果になります。なぜなら、すべての親が以前とは異なるSHAを持っているからです。

+1

私が読んだものから、 '' git replace''は変化するハッシュの問題を回避することはできません。 –

+1

@Jonasあなたが正しいです。私の答えを明確にするために再構成しました。 –

+1

素晴らしい!またgitの巨大なバグでしょう。あなたはハッシュを変更することなく歴史全体を置き換えることができます。結局のところ、これらの暗号ハッシュはgitを使う理由の1つです。 –

関連する問題