2012-01-23 22 views
11

私は実際にはモンスターの.gitフォルダ(2GB)を持っていることを嫌い、2002年の変更は気にせず、新しいリポジトリを作成したくありません.git/logを消去するにはどうすればよいですか?大きくなるとgitログを消去することが可能です

次回は、2011年から歴史や歴史のないリポジトリを複製したいと考えています。

は、あなたの質問から、あなたに

+1

[この回答を見る](http://stackoverflow.com/a/8483112/357743)どのくらい '.git'ディレクトリサイズを減らすのか分かりませんが、リポジトリ履歴に大きな変更を加えることはありません。 [この質問](http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository)への回答も同様に役立つかもしれません。 –

答えて

6

に感謝し、私はあなたがthisような何かをしたいと思います。

git-rebase(1)とまったく同じです。

$ git rebase -i HEAD~5 

git awsome-nessが含まれています。

  1. パブリック(リモート)コミットではgit-rebaseを使用しないでください。
  2. 作業ディレクトリがクリーンであることを確認してください(commitまたはstash)。
  3. 上記のコマンドを実行します。 $EDITORが起動します。
  4. pickCの前に置き換え、Dsquashに置き換えます。 CとDをBに融合します。コミットを削除したい場合は、その行を削除してください。

あなたが失われた場合、タイプ:安全.gitフォルダをcopmressする

$ git rebase --abort 

しかし、上記は推奨されません。 Linusのcommentに記載されているように、次のことを試すことができます。窓の事は、我々はそれぞれたいどのように大きなオブジェクトウィンドウについてです - その深さのものは(それはスペースのオーバーヘッドの価値がある彼らはもはや古い歴史を作る)だけのデルタチェーンがいかに深いについてです

git repack -a -d --depth=250 --window=250 

デルタ候補をスキャンする。

+1

'git rebase'はコミットの履歴を完全に書き換えて、すでにそのリポジトリから引き出されたすべてのpplに対して多くの問題を引き起こします。私は '.git'ディレクトリのサイズを減らすのが正しい方法だとは思わない。 –

+0

私は確信していませんが、私はgit repackをやった後、何も変わっていないし、私は押し込む必要もありません。次回は、すでにクリーンなリポジトリをクローンしたいと思う。 – Cynede

+0

古いコミットを追跡したくないので、 'git-rebase'が正しい選択だと思います。しかし、最初に 'git gc --aggressive --prune'を使ってみてください。 –

1

たぶん、あなたが試すことができます:

$ git gc --auto 

マンページは言う:

は、このような圧縮ファイルリビジョン(ディスク容量と増加を減らすために、現在のリポジトリ内のハウスキーピングタスクの数を実行します。 git addの以前の呼び出しで作成された到達不能オブジェクトを削除することができます。

このタスクを各リポジトリ内で定期的に実行することをお勧めします。

これは単なる提案ですが、gcを使用する必要はありません。

+0

は歴史や歴史を古いものから削除する必要があるとは思えません。 – Cynede

3

実行git gc --helpを入手してください。
あなたの場合git gc --aggressive --pruneが良いでしょう。

関連する問題