398 Stimmen

Größe des Git-Repositorys ermitteln

Wie kann ich auf einfache Weise die Größe meines Git-Repositorys ermitteln?

Und ich meine nicht du -h im Root-Verzeichnis meines Repositorys. Da ich viele ignorierte Dateien habe, würde sich diese Größe von der Gesamtgröße meines Repositorys unterscheiden. Ich möchte im Wesentlichen wissen, wie viele Daten beim Klonen meines Repositorys übertragen würden.

369voto

VonC Punkte 1117238

Beachten Sie, dass, da git 1.8.3 (April, 22d 2013) :

" git count-objects " gelernt " --human-readable " aka " -H "Option zur Anzeige verschiedener großer Zahlen in Ki / Mi / GiB nach Bedarf skaliert werden.

Dies könnte kombiniert werden mit dem -v Option erwähnt von Jack Morrison において seine Antwort .

git gc
git count-objects -vH

( git gc ist wichtig, wie bereits erwähnt von A-B-B 's répondre )

Außerdem ist die Ausgabe vollständiger (noch git 1.8.3):

" git count-objects -v " gelernt, um Meldung von übrig gebliebenen temporären Packdateien und anderem Müll im Objektspeicher .

316voto

sehe Punkte 346808

UPDATE Mit git 1.8.3 wurde eine effizientere Methode eingeführt, um eine ungefähre Größe zu ermitteln: git count-objects -vH (siehe Antwort von @VonC)

Für verschiedene Vorstellungen von "vollständiger Größe" können Sie verwenden:

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

Nahe dran (aber nicht genau:)

git gc
du -sh .git/

Bei letzterem würden Sie auch mitzählen:

  • Häkchen
  • Konfiguration (Fernbedienungen, Push-Zweige, Einstellungen (Leerzeichen, Zusammenführen, Aliase, Benutzer Details usw.)
  • Verstecke (siehe Kann ich einen Stash von einem entfernten Repo in einen lokalen Zweig holen? auch)
  • Wiederholungszwischenspeicher (der beträchtlich werden kann)
  • reflogs
  • Backups (von filter-branch, z.B.) und verschiedene andere Dinge (Zwischen Zustand von Rebase, Bisect usw.)

140voto

Jack Morrison Punkte 1603

Der Befehl git

git count-objects -v

gibt Ihnen einen guten Überblick über die Größe des Git-Repositorys. Ohne die Option -v wird nur die Größe der entpackten Dateien angezeigt. Dieser Befehl befindet sich möglicherweise nicht in Ihrem $PATH, so dass Sie ihn aufspüren müssen (unter Ubuntu fand ich ihn beispielsweise in /usr/lib/git-core/).

Aus der Git Man-Page:

-v, --verbose

Zusätzlich zur Anzahl der losen Objekte und des Disk-Spa meldet es die Anzahl der In-Pack-Objekte, die Anzahl der Packs, den Speicherplatz Speicherplatz, der von diesen Paketen verbraucht wird, und die Anzahl der Objekte, die durch Ausführen von git prune-packed entfernt werden können.

Ihre Ausgabe sieht ähnlich aus wie die folgende:

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

Die Zeile, die Sie suchen, lautet size-pack . Das ist die Größe aller gepackten Commit-Objekte bzw. die kleinstmögliche Größe für das neue geklonte Repository.

23voto

serv-inc Punkte 32204

Für weitere Details können Sie Folgendes verwenden git-sizer . Im --verbose Einstellung, die Beispielausgabe ist (unten). Die Total size of files Zeile zählt nur die Größe der Dateien in der größten Übertragung. Sie müssen die Größenwerte addieren.

$ 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})

Übrigens: Wenn Sie die Größe des Klons minimieren möchten, können Sie die --tiefe 1 Parameter von git clone.

12voto

Vivek Aggarwal Punkte 89

Diese Antwort gilt, wenn Sie Ihr Git-Repository auf Github veröffentlicht haben.

Sie können die Größe jedes Ihrer Repositories leicht in Ihrem Einstellungen der Konten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X