«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
Archives
Today
45
Total
1,243,420
안정적인 DNS서비스 DNSEver
관리 메뉴

Blue Breeze

비트버킷 저장소 크기 줄이기 본문

VersionControl/Git

비트버킷 저장소 크기 줄이기

푸른바람 C/H 2020. 2. 3. 10:21

비트버킷 저장소 크기 줄이기

큰 파일을 Bitbucket에 보관해야하는 경우 워크 플로의 일부로 Git LFS (Git Large File Storage)를 도입하는 것이 좋습니다 .

리포지토리 크기 제한

크기가이 제한을 초과하면 리포지토리 세부 정보 패널에 경고가 표시 됩니다 .

1.0GB 초과

1.0GB 제한을 초과하는 동안 커밋 을 푸시하면 명령 줄에 경고가 표시됩니다 .

$ git push 
Enumerating objects: 5, done. 
Counting objects: 100% (5/5), done. 
Delta compression using up to 12 threads 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (3/3), 332 bytes | 332.00 KiB/s, done. 
Total 3 (delta 0), reused 0 (delta 0) 
remote: This repository is currently 1.0 GB in size. If it exceeds 2 GB it will be put into read-only mode. 
remote: Learn how to reduce your repository size: https://confluence.atlassian.com/x/xgMvEw 
To https://bitbucket.org/example/monster.git 
    3db4505..0393b72 master -> master 
$ _

2.0GB 초과

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 406 bytes | 406.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: b'Repository is over the size limit (2 GB) and will not accept further additions.
remote: 
remote: Learn how to reduce your repository size: https://confluence.atlassian.com/x/xgMvEw.
remote: '
To https://bitbucket.org/example/monster.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://user@bitbucket.org/example/monster.git'
$ _

5.0GB 초과

5.0GB 이상에서는 모든 변경이 거부됩니다. 리포지토리 크기를 줄이는 데 도움을 받으려면 지원 요청 을 제기 해야합니다.

마지막 푸시 실행 취소

기록을 다시 쓰려면 푸시 제한을 제거하십시오.

잘못된 커밋이 포함 된 분기를 해당 커밋 직전에 되 감은 다음 리포지토리 크기를 리포지토리 크기 제한 아래로 가져 오기 위해 마지막 커밋을 제거하십시오. 이 프로세스는 잘못된 커밋이 한 지점에만 있고 다른 지점으로 병합되지 않았다고 가정합니다.

Warrning
영향을받는 분기를 사용하는 다른 사람에게 마지막 커밋을 실행 취소하고 있음을 알리고 해당 커밋을 다른 분기에 병합하지 않아야합니다.

Bitbucket의 원격 기록은 다음과 같습니다.

            branch
            |
o---o---o---o <= last commit in Bitbucket

로컬 기록은 다음과 유사 할 수 있습니다.

            branch
            |
o---o---o---o---o <= last local commit failed to push
        |
        reset to here and push

원격 지점 되감기

마지막 커밋을 포함하는 브랜치에서 :

  1. 로컬 커밋을 유지하기 위해 임시 분기를 만듭니다.
  2. 원래 분기를 마지막 분기 직전에 커밋으로 재설정하십시오 (또는 여러 커밋이 푸시 된 경우 큰 파일을 포함하는 잘못된 커밋 전에).
  3. 새 헤드를 Bitbucket으로 밉니다.
  4. 로컬 변경 사항 복원 – 아직 푸시 할 수 없으므로 먼저 큰 파일을 제거해야합니다.
    git branch <keeper>
    git reset --soft @{u}^
    git push --force
    git merge --ff-only <keeper>
    git branch -d <keeper>
    이 --soft옵션을 사용하면 아직 푸시하지 않은 커밋과 커밋하지 않은 변경 사항 이 유지 되므로 큰 파일을 제거한 후에 나중에 푸시 할 수 있습니다. 유지하려는 변경 사항이 없으면 위의 명령 줄 예에서 --hard옵션을 사용하고 Sepeps 1, 4 및 5 를 건너 뛸 수 있습니다 .

매달려있는 커밋 제거

이제 마지막 커밋을 제거하고 가비지 수집을 실행하여 마지막 커밋이 완전히 제거되고 리포지토리의 크기가 줄어들 도록 지원 요청 을 제기 해야합니다 .

Bitbucket의 원격 기록은 이제 다음과 같습니다.

        branch
        |
o---o---o-/-o
            |
            prune this

큰 파일 제거

푸시가 차단 해제되면 저장소에서 대용량 파일을 제거 할 수 있습니다. 다음은 Git 리포지토리를 유지 관리하고 Git LFS 사용에 대한 자세한 정보를 제공하는 데 도움이되는 몇 가지 리소스입니다.

추가 LFS 스토리지 비용을 지불하지 않고 많은 대용량 파일을 유지하려면 다른 곳에 두어야합니다. 사용 가능한 옵션 중 일부는 아래 큰 파일 저장 옵션을 참조하십시오 .

Warnning
큰 파일이 제거되면 Bitbucket에서 리포지토리를 복제하는 것이 가장 좋습니다. 그렇지 않으면 누군가가 강제 푸시를 수행하면 큰 파일을 다시 푸시하고 시작한 곳으로 돌아갑니다.

큰 커밋 방지

실수로 큰 파일을 저장소에 추가하지 않도록하기 위해 수행 할 수있는 몇 가지 작업이 있습니다.

  • 포함하고 싶지 않은 종류의 파일은 무시하도록 Git에 지시하십시오.
  • 대량 커밋이 생성되지 않도록 자동화를 설치하십시오.

큰 파일 무시

로컬 저장소를 포함하는 디렉토리에서 호출되는 파일에 경로 이름 패턴을 추가하여 Git에게 커밋에서 파일을 제외하도록 지시 할 수 있습니다 .gitignore.

예를 들면 다음과 같습니다.

# File types to ignore
*.exe
*.bin
*.jar
*.war
*.mp3
*.mp4
# Directories to ignore
target/
.build/
.env/

일반적으로, Git에게 무시하도록 지시 할 수 있습니다 :

  • 아티팩트 빌드 – 모든 것을 디렉토리에 넣는 것이 가장 좋습니다. 예를 들어 Maven은이를 target디렉토리에 넣습니다 .
  • IDE 설정 – 일반적으로 저장소에서 이러한 설정을 원하지 않습니다 (예 : .idea디렉토리 무시) .
  • 의존성 – 의존성 캐시를 제외합니다 (예 : Python의 virtualenv 또는 노드의 로컬 패키지).
  • 미디어 파일 – git 저장소는 큰 오디오 또는 비디오 파일을 보관하기에 가장 좋은 장소는 아닙니다.

큰 커밋 차단

커밋에 큰 파일이 포함되는 것을 방지하기 위해 커밋 마다 파일 크기를 확인 하는 로컬 후크를 설치 하여 커밋이 너무 큰 경우 커밋을 거부 할 수 있습니다.

check_added_large_files 후크를 저장소에 복사 하여 시작하십시오. 누구나 로컬 저장소의 사전 커미트 후크로 추가하여 설치할 수 있습니다.

ln -s check_added_large_files.py .git/hooks/pre-commit.py

리포지토리에서 스크립트의 사본을 원하는대로 작동하도록 변경할 수 있으며 모든 사람은 최신 로직을 얻을 수 있습니다.

큰 파일을 저장하기위한 옵션

Bitbucket 리포지토리는 소스 파일을 보관하기에 가장 좋은 장소입니다. 해당 소스에서 다른 파일을 생성 할 수있는 더 좋은 곳이 있습니다. 여기에 몇 가지 예가 있지만 사용 가능한 모든 옵션을 탐색하도록 권장합니다.

이슈 저장소 사용

빌드 아티팩트를 저장하는 많은 서비스가 있으며 두 가지 인기있는 예는 다음과 같습니다.

  • Sonatype Nexus
  • JFrog Artifactory
    빌드 아티팩트를 이러한 저장소에 업로드하여 공유 할 수 있도록 빌드 프로세스를 구성하십시오. 또한 .gitignore커밋에서 빌드 아티팩트를 제외하도록 구성되어 있는지 확인하십시오 .

Docker 리포지토리 사용

Bitbucket 리포지토리가 실행 파일을 빌드하는 데 사용되는 경우 Docker 이미지 로 빌드하는 것이 좋습니다.
빌드 프로세스는 이미지를 Docker Hub에 호스팅 된 Docker 저장소 또는 로컬 Docker 저장소로 푸시 할 수 있습니다.

AWS S3 사용

큰 미디어 파일을 Bitbucket 리포지토리에 저장하지 않고 쉽게 다운로드 할 수 있는 S3 버킷에 업로드하십시오 .

힘내 LFS 사용

파일이 실제로 Bitbucket 리포지토리의 일부 여야하는 경우 계획에서 사용 가능한 큰 파일 저장소를 사용하십시오. 필요한 경우 더 많은 저장 용량을 구입할 수 있습니다.

와일드 카드 패턴을 사용하여 특정 유형의 파일에 LFS를 사용하도록 Git에 지시하십시오.

git lfs track "<pattern>"

예를 들어 MP4 동영상에 LFS를 사용하려면 :

git lfs track "*.mp4"

'VersionControl > Git' 카테고리의 다른 글

github.com 프로젝트 참여 - 정리 메모  (0) 2020.02.13
비트버킷 저장소 크기 줄이기  (0) 2020.02.03
저장소 크기(history) 줄이기  (0) 2019.07.19
github.com 탈퇴, 재가입  (0) 2019.02.21
Git을 이용한 백업  (0) 2018.11.22
Command Line Git Import  (0) 2018.03.02
0 Comments
댓글쓰기 폼