確認 Git のディスク容量を減らしますか?




git 容量制限 (9)

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

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

ありがとう


リポジトリで何をしたいかによって、次のgit cloneオプションを使うことも考えられます:

   --depth <depth>
       Create a shallow clone with a history truncated to the specified
       number of revisions. A shallow repository has a number of
       limitations (you cannot clone or fetch from it, nor push from nor
       into it), but is adequate if you are only interested in the recent
       history of a large project with a long history, and would want to
       send in fixes as patches.

git-gcは、リポジトリのクリーンアップと圧縮に使用される他の多くのコマンドを呼び出します。 古い未使用ブランチを削除するだけです。

短い答え:いいえ:-(


あなたのコンピュータにたくさんのgitプロジェクトをクローンしているかもしれませんが、今日は積極的に働いているプロジェクトはごくわずかです。

アイドル状態のプロジェクトでは、チェックアウトされた作業ファイルはかなりの量のディスク容量を消費する可能性があります。 (gitの履歴よりもさらに大きくなることもあります。これは、履歴が圧縮されるためです)。

  • したがって、ディスク容量を節約する1つの方法は、作業していないアイドル状態のプロジェクトから作業ファイルを削除することです。 それを行う良い方法は、プロジェクトで作業していないときに切り替えることができる空のブランチを作成することです。

  • あなたができるもう一つの抜本的なことは、 .git/configファイル以外のすべてを絶対に削除することです。 または、最大のフォルダgitの履歴を削除してください:

    rm -rf .git/objects
    

    これにより、履歴とファイルを元に戻したいときに、今後もgit fetchを行うことができます。 これを行う前に、すべての作業(ローカルブランチを含む)をリモートリポジトリにプッシュしておく必要があるので、ローカルgitリポジトリに保持する必要があるものは何もありません。


リポジトリを再パックすることができます。 しかし、私はそれが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 gcは未使用のオブジェクトを削除します。 それはあなたができるすべてについてです。

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


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

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


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


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





git