Gitリポジトリのサイズを確認する


283

Gitリポジトリのサイズを確認する簡単な方法は何ですか?

そして、私はdu -h私のリポジトリのルートディレクトリを意味するものではありません。無視されたファイルがたくさんあるので、そのサイズはリポジトリの合計サイズとは異なります。基本的に、リポジトリのクローンを作成するときに転送されるデータの量を知りたいです。


回答:


260

更新 git 1.8.3は、おおよそのサイズを取得するためのより効率的な方法を導入しました:git count-objects -vH(@VonCによる回答を参照)

「完全なサイズ」のさまざまなアイデアについては、以下を使用できます。

git bundle create tmp.bundle --all
du -sh tmp.bundle

閉じる(ただし正確ではない:)

git gc
du -sh .git/

後者の場合、あなたも数えるでしょう:

  • フック
  • config(リモート、ブランチのプッシュ、設定(空白、マージ、エイリアス、ユーザーの詳細など))
  • スタッシュ(リモートリポジトリからローカルブランチにスタッシュをフェッチできますか?も参照)
  • キャッシュをやり直す(かなりの量になる可能性があります)
  • reflogs
  • バックアップ(フィルターブランチなど)やその他のさまざまなもの(リベース、バイセクトなどからの中間状態)

ありがとう!最初の動作はクローンの合計サイズをより正確に反映しましたが、2番目の動作もかなり近かったです。
mschallert

7
注:この回答は古くなっています。gitバージョン> = 1.8.3については、代わりにVonCの回答を参照してください。
John Dibling 2014年

また、私の答えはより完全な方法であり、それ自体にメリットがあるかもしれないことに注意してください。
sehe

あなたは何を追加してくださいすることができますgit bundleし、git gc実際にありませんの?別の(不要な)アーカイブを作成してからサイズを測定しますか?
Ramesh Pareek、2016年

1
@RameshPareekはい。私はduそのファイルのサイズを測定するために使用しているので、これはかなり明確です。
2016年

252

以来、なおgitの1.8.3(2013年4月、22D)

" git count-objects" Learned " --human-readable" aka " -H"オプションは、必要に応じてスケールされたKi/ Mi/ でさまざまな大きな数を表示しますGiB

これは-vジャックモリソン彼の回答で述べたオプションと組み合わせることができます。

git gc
git count-objects -vH

ABB回答でgit gc述べられているように、重要です)

さらに(まだgit 1.8.3)、出力はより完全です:

" git count-objects -v" は、オブジェクトストア内の残りの一時パックファイルと他のゴミ報告することを学びました。


116

gitコマンド

git count-objects -v

gitリポジトリのサイズの適切な見積もりが得られます。-vフラグを指定しないと、解凍されたファイルのサイズのみが通知されます。このコマンドは$ PATHに含まれていない可能性があります。追跡する必要がある場合があります(Ubuntuでは、たとえば/ usr / lib / git-core /にあります)。

Gitのマンページから:

-v、-verbose

緩やかなオブジェクトの数と消費されたディスク領域に加えて、パック内オブジェクトの数、パックの数、それらのパックによって消費されたディスク領域、およびgit prune-packedを実行して削除できるオブジェクトの数を報告します。

出力は次のようになります。

count: 1910
size: 19764
in-pack: 41814
packs: 3
size-pack: 1066963
prune-packable: 1
garbage: 0

あなたが探している行はですsize-pack。これは、パックされたすべてのコミットオブジェクトのサイズ、または新しくクローンされたリポジトリの可能な最小サイズです。


4
私の経験では、(PATHにないため)git count-objects -v機能しgit-count-objects -vません。
mwolfetech 2012

5
@psihodelia リポジトリがまだパックされていない可能性があるため、実行するgit gc前に実行する必要があるようですgit count-objects -v。証拠については、ここの最初の回答を参照してください:stackoverflow.com/questions/3532740/…–
Jack Morrison

5
grepを使用して、目的の行のみを取得できますgit count-objects -vH | grep 'size-pack'H@VonCは彼の答えに言ったように、人間が読める形式でそれを示すことです。
alko989 2014年

git count-objects --help:size-pack:パックによって消費されたディスクスペース(KiB
単位

5

使用できますgit-sizer--verbose設定、出力例(下記)です。Total size of files行を探します。

$ git-sizer --verbose
Processing blobs: 1652370
Processing trees: 3396199
Processing commits: 722647
Matching commits to trees: 722647
Processing annotated tags: 534
Processing references: 539
| Name                         | Value     | Level of concern               |
| ---------------------------- | --------- | ------------------------------ |
| Overall repository size      |           |                                |
| * Commits                    |           |                                |
|   * Count                    |   723 k   | *                              |
|   * Total size               |   525 MiB | **                             |
| * Trees                      |           |                                |
|   * Count                    |  3.40 M   | **                             |
|   * Total size               |  9.00 GiB | ****                           |
|   * Total tree entries       |   264 M   | *****                          |
| * Blobs                      |           |                                |
|   * Count                    |  1.65 M   | *                              |
|   * Total size               |  55.8 GiB | *****                          |
| * Annotated tags             |           |                                |
|   * Count                    |   534     |                                |
| * References                 |           |                                |
|   * Count                    |   539     |                                |
|                              |           |                                |
| Biggest objects              |           |                                |
| * Commits                    |           |                                |
|   * Maximum size         [1] |  72.7 KiB | *                              |
|   * Maximum parents      [2] |    66     | ******                         |
| * Trees                      |           |                                |
|   * Maximum entries      [3] |  1.68 k   | *                              |
| * Blobs                      |           |                                |
|   * Maximum size         [4] |  13.5 MiB | *                              |
|                              |           |                                |
| History structure            |           |                                |
| * Maximum history depth      |   136 k   |                                |
| * Maximum tag depth      [5] |     1     |                                |
|                              |           |                                |
| Biggest checkouts            |           |                                |
| * Number of directories  [6] |  4.38 k   | **                             |
| * Maximum path depth     [7] |    13     | *                              |
| * Maximum path length    [8] |   134 B   | *                              |
| * Number of files        [9] |  62.3 k   | *                              |
| * Total size of files    [9] |   747 MiB |                                |
| * Number of symlinks    [10] |    40     |                                |
| * Number of submodules       |     0     |                                |

[1]  91cc53b0c78596a73fa708cceb7313e7168bb146
[2]  2cde51fbd0f310c8a2c5f977e665c0ac3945b46d
[3]  4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts)
[4]  a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h)
[5]  5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11)
[6]  1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree})
[7]  78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree})
[8]  ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree})
[9]  532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree})
[10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})

1
クローンの合計サイズだけではなく、より多くの情報が表示されるので、これは素晴らしいことです。私がまだ知りたいことを示していないことの1つは、ダウンロードした場合のZIPのサイズです(すべてのコミットが含まれているわけではありません)。
NH。

@IndrajeetGour:あなたからインストールする必要がありgithub.com/github/git-sizer/#getting-started。ダウンロードはgithub.com/github/git-sizer/releasesにあります。
serv-inc

@downvoterは彼の推論を説明しても構わないでしょうか?
serv-inc

1

git LFSを使用する場合、git count-objectsはバイナリをカウントせず、バイナリへのポインターのみをカウントします。

LFSファイルがArtifactorysによって管理されている場合は、REST APIを使用する必要があります。

  • 任意の検索エンジンからwww.jfrog.com APIを取得します
  • Get Storage Summary Infoを見てください。

1

これがあなたにリポジトリ履歴のすべてのファイルの合計リストを与えると思います

git rev-list --objects --all | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc

あなたは置き換えることができ--alltreeish(とHEADorigin/master枝の大きさを計算するなど)。


-1

リポジトリがGitHubにある場合、デフォルトでリポジトリのサイズを表示するオープンソースのAndroidアプリOctodroidを使用できます。

たとえば、mptcpリポジトリの場合:

Octodroid上のマルチパスTCPリポジトリのサイズ

クローン作成中のリポジトリのサイズ

免責事項:Octodroidを作成していません。


1
それらは異なる単位(GB x GiB)です。ちなみに、1.71 GB = 1.84 GiB、変換するだけでラウンドを気にしません。
Luciano

申し訳ありませんが、入力時にそれらを混同しました。正しい関係は1.71 GiB = 1.84 GB
Luciano
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.