गिट रिपॉजिटरी का आकार ज्ञात कीजिए


283

मेरे गिट रिपॉजिटरी के आकार को खोजने का एक सरल तरीका क्या है?

और मुझे du -hअपनी रिपॉजिटरी की रूट डायरेक्टरी पर कोई मतलब नहीं है । मेरे पास बहुत अधिक उपेक्षित फाइलें हैं, इसलिए वह आकार मेरे कुल भंडार आकार से भिन्न होगा। मैं अनिवार्य रूप से जानना चाहता हूं कि मेरी रिपॉजिटरी को क्लोन करने पर कितना डेटा ट्रांसफर होगा।


जवाबों:


260

UPDATE git 1.8.3 ने एक मोटा आकार पाने के लिए एक अधिक कुशल तरीका पेश किया: git count-objects -vH(@VonC द्वारा उत्तर देखें)

"पूर्ण आकार" के विभिन्न विचारों के लिए आप इसका उपयोग कर सकते हैं:

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

बंद करें (लेकिन सटीक नहीं :)

git gc
du -sh .git/

उत्तरार्द्ध के साथ, आप भी गणना करेंगे:


धन्यवाद! पहला व्यवहार अधिक सटीक रूप से कुल क्लोन आकार को दर्शाता है लेकिन दूसरा भी काफी करीब था।
एमएसचेलर्ट

7
नोट: यह उत्तर पुराना है। Git संस्करणों> = 1.8.3 के बजाय VonC का उत्तर देखें ।
जॉन डिबलिंग

ध्यान दें कि मेरा उत्तर एक तरीका अधिक पूर्ण है, जिसका अपना गुण हो सकता है।
sehe

क्या आप कृपया जोड़ सकते हैं git bundleऔर git gcवास्तव में क्या करता है? क्या यह एक और (अवांछित) संग्रह बनाएगा और फिर आकार को मापेगा?
रमेश पारीक

1
@RameshPareek हाँ। यह बहुत स्पष्ट है क्योंकि मैं duउस फ़ाइल का आकार मापने के लिए उपयोग कर रहा हूं ।
sehe

252

ध्यान दें कि, git 1.8.3 (अप्रैल, 22d 2013) के बाद से :

" git count-objects" सीखा " --human-readable" aka " -H" विकल्प के रूप में विभिन्न बड़ी संख्या में दिखाने के लिए Ki/ Mi/ GiBआवश्यक के रूप में बढ़ाया।

यह उनके जवाब में जैक मॉरिसन-v द्वारा उल्लिखित विकल्प के साथ जोड़ा जा सकता है ।

git gc
git count-objects -vH

( git gcमहत्वपूर्ण है, जैसा कि एबीबी के उत्तर द्वारा बताया गया है )

प्लस (अभी भी 1.8.3 git), आउटपुट अधिक पूर्ण है:

" git count-objects -v" सीख लिया अस्थायी packfiles और वस्तु की दुकान में अन्य कचरा बचे हुए रिपोर्ट


116

Git कमांड

git count-objects -v

आपको गिट रिपॉजिटरी के आकार का एक अच्छा अनुमान देगा। -V फ्लैग के बिना, यह केवल आपकी अनपैक्ड फाइलों का आकार बताता है। यह कमांड आपके $ PATH में नहीं हो सकती है, आपको इसे ट्रैक करना पड़ सकता है (उबंटू पर मैंने इसे / usr / lib / git-core / में पाया, उदाहरण के लिए)।

Git मैन-पेज से:

-v, --verbose

खपत की गई ढीली वस्तुओं और डिस्क स्थान की संख्या के अलावा, यह इन-पैक ऑब्जेक्ट्स की संख्या, पैक्स की संख्या, उन पैक्सों द्वारा खपत की गई डिस्क स्पेस और उन वस्तुओं की संख्या की रिपोर्ट करता है जिन्हें गिट प्रून पैक करके हटाया जा सकता है।

आपका आउटपुट निम्न के जैसा दिखेगा:

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

जिस लाइन की आपको तलाश है size-pack। यह सभी पैक की गई वस्तुओं का आकार है, या नए क्लोन भंडार के लिए सबसे छोटा संभव आकार है।


4
मेरे अनुभव में, git count-objects -vकाम करता है जब git-count-objects -vनहीं (क्योंकि यह मेरे पेट में नहीं है)।
mwolfetech

5
@psihodelia ऐसा लगता है कि आपको दौड़ने git gcसे पहले भागना git count-objects -vपड़ सकता है क्योंकि आपकी रिपॉजिटरी अभी तक पैक नहीं हुई है। सबूत के लिए यहां पहला उत्तर देखें: stackoverflow.com/questions/3532740/…
जैक मॉरिसन

5
आप केवल वांछित लाइन प्राप्त करने के लिए grep का उपयोग कर सकते हैं git count-objects -vH | grep 'size-pack':। H, मानव पठनीय प्रारूप में यह दिखाने के लिए है के रूप में @VonC अपने जवाब में कहा।
एल्को 989

git count-objects --help: size-pack:
कीब

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
यह अच्छा है क्योंकि यह कुल क्लोनिंग आकार की तुलना में अधिक जानकारी दिखाता है। एक चीज यह नहीं दिखाती है कि मैं अभी भी जानना चाहूंगा कि डाउनलोड होने पर ज़िप कितना बड़ा होगा (इसमें सभी कमिट नहीं हैं)।
एनएच।

@ IndrajeetGour: आपको github.com/github/git-sizer/#getting-started से इंस्टॉल करना होगा । डाउनलोड्स github.com/github/git-sizer/releases पर हैं
सर्व-

क्या @downvoter अपने तर्क को समझाने के लिए परवाह करेगा, या नहीं?
सर्व-इंक

1

यदि आप git LFS का उपयोग करते हैं, तो git काउंट-ऑब्जेक्ट्स आपके बायनेरिज़ की गिनती नहीं करते हैं, लेकिन केवल उन्हें इंगित करते हैं।

यदि आपकी LFS फाइलें Artifactorys द्वारा प्रबंधित की जाती हैं, तो आपको REST API का उपयोग करना चाहिए:

  • किसी भी खोज इंजन से www.jfrog.com एपीआई प्राप्त करें
  • संग्रहण संग्रहण जानकारी देखें

1

मुझे लगता है कि यह आपको रेपो इतिहास की सभी फाइलों की कुल सूची देता है:

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

आप बदल सकते हैं --allएक treeish (साथ HEAD, origin/masterएक शाखा के आकार की गणना करने के, आदि)।


-1

यदि रिपॉजिटरी GitHub पर है , तो आप ओपन सोर्स एंड्रॉइड ऐप ऑक्टोडॉइड का उपयोग कर सकते हैं जो डिफ़ॉल्ट रूप से रिपॉजिटरी के आकार को प्रदर्शित करता है।

उदाहरण के लिए, एमटीपीसी रिपॉजिटरी के साथ:

ऑक्टोडॉइड पर मल्टीपाथ टीसीपी रिपॉजिटरी का आकार

क्लोनिंग करते समय रिपॉजिटरी का आकार

अस्वीकरण: मैंने ऑक्टोडॉइड नहीं बनाया।


1
वे विभिन्न इकाइयों (GB x GiB) में हैं। वैसे 1.71 GB = 1.84 GiB, केवल राउंड के बारे में परिवर्तित करना और उसकी देखभाल न करना।
लुसियानो

क्षमा करें, टाइप करते समय मैंने उन्हें मिलाया, सही संबंध: 1.71 GiB = 1.84 GB
लुसियानो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.