2012-03-24 16 views
3

私のプロジェクト(gitリポジトリにチェックインされています)に、巨大なディレクトリ(15000ファイル、3GB)を追加しました。これが間違っていると分かったとき、私はそれを削除しましたが、それはまだ歴史に残っているようです。gitの履歴を整理する

まだプロジェクトのクローンが非常に長い作業になっています。プロジェクトが複製されると、.gitディレクトリは約4GBですが、実際のプロジェクトサイズはわずか15MBです。

私の質問は:どのように私は3GBのディレクトリが削除されていることを確認などの履歴を微調整できますか?または、プロジェクトのダウンロードサイズ全体を減らし、クローンプロセスをスピードアップする別の方法がありますか?このガイドに従うように

+0

だけ明確にする:3ギガバイトは正しい、しばらくの間、リポジトリにありましたか?非常に最近のコミットでない場合や、他の人が大きなものの後にコミットを既に引っ張っている場合は、処理が異なります。 –

+0

土曜日は約1ヶ月間そこにいました。私は別の月前にそれを削除しました。いくつかのファイルが変更されている可能性があります。プロジェクトには2人の開発者しかいません。 –

+1

[git repoからファイルを完全に削除](http://stackoverflow.com/questions/5563564/remove-files-from-git-repo-completely) – ralphtheninja

答えて

4

を行うことができます。これがリビジョンAAAAAAAで行われたとします。

コミットを取り除くには、ディレクトリ(コミットBBBBBBB)を削除してもう一度チェックインするのは十分ではありません。コミットAAAAAAAは依然としてそこにあり、あなたのレポサイズを吹き飛ばしています。

コミットを取り除くには、git rebaseが必要です。あなたのgitのコンソールを開き、これはAAAAAAAコミットが最初の行にあるエディタが起動します

git rebase -i AAAAAAA~1 

を入力します。この行を削除します(つまり、Vimがエディタである場合は、BBBBBBB)、ファイルを保存して終了します(:wqa)。

この後、リベースが開始され、終了すると、AAAAAAAおよびBBBBBBBは存在しなくなります。本当に。

git gcでハウスキーピングを開始し、実行中のコーヒーを1枚フェッチすることもできます。


もこの答えを参照してください。git push heroku - stop heroku pushing/uploading massive file

+0

あなたの答えをありがとう。私にとっては良い計画のようですが、実際には新しいリポジトリを作成し、そこにコードをコピーして最初からやり直したいと思っています。それは私の方が簡単で、少なくともプロセス全体を完全に理解していました:) –

+0

'-i'と'〜1'はどういう意味ですか? – qed

+1

@qed:-iはインタラクティブ(rebaseのドキュメントを参照)を意味し、〜1は1リビジョンを意味します(https://www.kernel。org/pub/software/scm/git/docs/gitrevisions.html) – eckes