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/

후자를 사용하면 다음과 같이 계산됩니다.


감사! 첫 번째 동작은 전체 클론 크기를보다 정확하게 반영했지만 두 번째 동작도 매우 유사했습니다.
mschallert

7
참고 :이 답변이 오래되었습니다. git 버전> = 1.8.3에 대해서는 VonC의 답변을 참조하십시오 .
John Dibling

또한 내 대답은 더 완벽한 방법이며 자체 장점을 가질 수 있습니다.
sehe

무엇 git bundlegit gc실제로 추가 할 수 있습니까 ? 다른 (원치 않는) 아카이브를 만든 다음 크기를 측정합니까?
Ramesh Pareek

1
@RameshPareek 예. du해당 파일의 크기를 측정하는 데 사용 하기 때문에 이것은 분명 합니다.
sehe

252

이후, 그 참고 자식 1.8.3 (2013 년 4 월 22D) :

" git count-objects"배운 " --human-readable일명" " -H에서"옵션은 다양한 많은 수를 보여 Ki/ Mi/ GiB필요에 따라 조정.

이것은 Jack Morrison그의 답변 에서 -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에 없을 수도 있습니다. 우분투에서 / usr / lib / git-core /에서 찾았습니다.

Git 맨 페이지에서 :

-v, --verbose

느슨한 오브젝트 수 및 소비 된 디스크 공간 외에도 팩 내 오브젝트 수, 팩 수, 해당 팩이 소비 한 디스크 공간 및 정리 된 git prunning을 실행하여 제거 할 수있는 오브젝트 수를보고합니다.

출력 결과는 다음과 유사합니다.

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(PATH에 없기 때문에).
mwolfetech

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

git count-objects --help: size-pack : KiB에서 팩이 사용하는 디스크 공간 (-H가 지정되지 않은 경우)
auralbee

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
이것은 전체 복제 크기보다 더 많은 정보를 표시하기 때문에 좋습니다. 내가 아직도 알고 싶어하지 않는 한 가지는 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를 다운로드하십시오
  • 스토리지 요약 정보 얻기를 참조하십시오.

1

나는 이것이 당신에게 repo history에있는 모든 파일의 전체 목록을 제공 한다고 생각 합니다.

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

당신은 대체 할 수 --alltreeish (와 HEAD, origin/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.