確認 - git 容量制限




Gitのディスク容量を少なくしますか? (8)

Git gcは未使用のオブジェクトを削除します。 それはあなたができるすべてについてです。

あなたのリポジトリが大きすぎると分割することも考えられます。

gitがディスク領域を消費する最善の方法は何ですか?

私はgit-gcをリポジトリで使用しています(特に、クローンされてからコミットが多い場合は助けになります)が、gitで使用されるディスクスペースを縮小するための他のコマンドがあれば助言したいと思います。

ありがとう


Gitクローンには、他のブランチのgit履歴を取得せずに、単一のブランチをチェックアウトすることができる--single-branchオプションが追加されました。 ブランチがたくさんあるのでgitがたくさんのディスクスペースを消費している場合は、現在のチェックアウトを削除し、このオプションを使ってレポを再クローンしていくらかのディスクスペースを取り戻すことができます。 例えば:

cd ../
rm -rf ./project
git clone -b master --single-branch [email protected]:username/project.git

また、あなたの現在のマスターが長い履歴を持っていて、未処理のブランチがマスターに戻される必要がない場合は、マスターからアーカイブブランチを作成し、git履歴なしで新しい孤立マスターを作成することができます:

git checkout -b master_archive_07162013  # create and switch to the archive branch
git push origin master_archive_07162013  # push the archive branch to the remote and track it
git branch -D master                     # delete local master
git push --delete origin master          # delete remote master
git remote prune origin                  # delete the remote tracking branch
git checkout --orphan master             # create a new master branch with no history
git commit -m "initial commit"           # re-establish the files in the repo
git push origin master                   # push the new master to the remote

新しいマスターブランチのツリーは、古いアーカイブされたマスターブランチには関係しません。本当にブランチをアーカイブしているときにのみ、これを実行します。

あなたのmasterブランチをアーカイブしてからgit clone masterをsingle-branchでアーカイブすると、あなたのチェックアウトはずっと小さくなるはずです。


git pruneはヒントかもしれません。 到達不能なコミットからリポジトリを消去します( git gcは呼び出しません)


あなたがダウンロードサイズを気にしない場合、偽の証明方法はリポジトリを削除することです(フォルダ全体を削除するだけです)。 保存する必要のあるものがすべてサーバーにプッシュされていることを確認してください。


すべてのgitリポジトリには履歴がすべて含まれています。 gitはこのようなものを圧縮するのはかなり良い仕事ですが、そこにはたくさんのデータがあります。

「はっきりしていますが、潜在的には不可能な解決策は、古い歴史のない新しいリポジトリを開始することです。


すべてのコミット履歴をローカルに保持する必要がない場合は、シャロークローンを使用できます。

git clone --depth=1 [url_of_repo]

私は頻繁にgithubプロジェクトをクローンするときにこれを使用します。

どうやらフェッチとプッシュは浅いクローンではサポートされていませんでしたが、私はgithub reposに変更を正常にプッシュしてプルすることができました。 (しかしブランチをマージしたいが、歴史の中でベースコミットをしていないなら、あなたは難しいだろう。)

上記のように新しくクローンを作成する方が簡単だと思いますが、既存のローカルリポジトリをトリミングする方法を示した人もいます。


リポジトリを再パックすることができます。 しかし、私はそれがgit gcによって呼び出されたと思います

git repack -ad


私が提供できるいくつかの提案があります:

  1. 削除されたブランチは削除されました。 彼らはあなたが使用せず、決して使うことのないコミットをいくつかピンすることができます。 ただし、後で必要になるブランチを削除しないように注意してください(おそらく、レビューや失敗した作業の比較のため)。 最初にバックアップします。

  2. 大量のバイナリファイル(おそらく生成されたファイル)を誤ってコミットしていないか確認してください。 もしあなたが持っていれば、 "git filter-branch"を使って履歴から削除することができます...リポジトリを共有していないか、他の貢献者を悪化させて履歴を書き換える価値があります。 再度:最初にバックアップします。

  3. git gc --prune=nowまたはlow-level git pruneを使用して、より積極的にいくつかの安全性を破棄することができます。 しかし、圧縮した後すぐに必要な安全とバックアップ(reflogなど)は削除しないように注意してください。

  4. おそらく、あなたのリポジトリを拡大するのは、作業ディレクトリ内のいくつかのuntrackedファイルです。 "きれいにする"か "きれいにする"が助けになるかもしれません(ただし、重要なファイルをいくつか削除しないように注意してください)。

  5. これらの提案の中で最も安全です:低レベルのgit-repack --depth--windowオプションを使用して、もっと積極的にパックしようとすることができます。 2008年6月6日のDVCS ComparisonブログのPieter de BieのGit Repack Parametersブログ記事も参照してください。あるいは " git gc --aggressive "。







git