GitHub의 크기 제한 정보
GitHub은(는) 파일 및 리포지토리 크기 조정의 하드 제한이 있지만 모든 Git 리포지토리에 풍부한 스토리지를 제공하려고 합니다. 사용자의 성능과 안정성을 보장하기 위해 전체 리포지토리 상태의 신호를 적극적으로 모니터링합니다. 리포지토리 상태는 크기, 커밋 빈도, 콘텐츠, 구조를 비롯한 다양한 상호 작용 요소의 함수입니다.
파일 크기 제한
GitHub은(는) 리포지토리에 허용되는 파일의 크기를 제한합니다. 50MiB보다 큰 파일을 추가하거나 업데이트하려고 하면 Git에서 경고가 표시됩니다. 변경 내용은 여전히 리포지토리에 성공적으로 푸시되지만 성능 영향을 최소화하기 위해 커밋을 제거하는 것이 좋습니다. 자세한 내용은 리포지토리의 기록에서 파일 제거를 참조하세요.
Note
브라우저를 통해 리포지토리에 파일을 추가하는 경우 파일은 25MiB보다 클 수 없습니다. 자세한 내용은 리포지토리에 파일 추가을(를) 참조하세요.
GitHub은(는) 100MiB보다 큰 파일을 차단합니다.
이 제한을 초과하는 파일을 추적하려면 Git 대용량 파일 스토리지(Git LFS)을(를) 사용해야 합니다. 자세한 내용은 Git Large File Storage 정보을(를) 참조하세요.
리포지토리 내에 큰 파일을 배포해야 하는 경우 파일을 추적하는 대신 GitHub.com에 릴리스를 만들 수 있습니다. 자세한 내용은 큰 이진 파일 배포를 참조하세요.
Git은 대용량 SQL 파일을 처리하도록 설계되지 않았습니다. 대규모 데이터베이스를 다른 개발자와 공유하려면 파일 공유 서비스를 사용하는 것이 좋습니다.
리포지토리 크기 제한
리포지토리는 작게 유지되고 이상적으로는 1GB 미만이며 5GB 미만을 사용하는 것이 좋습니다. 리포지토리가 작을수록 복제 속도가 빨라지고 작업 및 유지 관리가 더 쉬워집니다. 리포지토리가 인프라에 지나치게 영향을 주는 경우 GitHub 지원에서 정정 작업을 수행하라는 메일을 받을 수 있습니다. 우리는 특히 많은 협력자가 있는 대규모 프로젝트에서 유연하게 작업하려고 노력하며 가능한 한 해결책을 찾기 위해 귀하와 협력할 것입니다. 리포지토리의 크기와 전반적인 상태를 효과적으로 관리하여 리포지토리가 인프라에 영향을 주지 않도록 방지할 수 있습니다. github/git-sizer
리포지토리에서 리포지토리 분석을 위한 조언과 도구를 찾을 수 있습니다.
외부 종속성으로 인해 Git 리포지토리가 매우 커질 수 있습니다. 리포지토리에 외부 종속성이 채워지는 것을 방지하려면 패키지 관리자를 사용하는 것이 좋습니다. 공용 언어에 대한 인기 있는 패키지 관리자로는 Bundler, Node의 패키지 관리자, Maven이 있습니다. 이러한 패키지 관리자는 Git 리포지토리를 직접 사용할 수 있도록 지원하므로 미리 패키지된 원본이 필요하지 않습니다.
Git은 백업 도구로 사용하도록 설계되지 않았습니다. 그러나 Arq, Carbonite, CrashPlan과 같은 백업을 수행하도록 특별히 설계된 많은 솔루션이 있습니다.
리포지토리의 기록에서 파일 제거
Warning
이 절차는 컴퓨터의 리포지토리와 GitHub.com에서 파일을 영구적으로 제거합니다. 파일이 중요한 경우 리포지토리 외부의 디렉터리에 로컬 백업 복사본을 만듭니다.
가장 최근에 푸시되지 않은 커밋에 추가된 파일 제거
파일이 가장 최근 커밋과 함께 추가되었으며 GitHub.com에 푸시하지 않은 경우 파일을 삭제하고 커밋을 수정할 수 있습니다.
-
Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.
-
현재 작업 디렉터리를 로컬 리포지토리로 변경합니다.
-
파일을 제거하려면
git rm --cached
를 입력합니다.$ git rm --cached GIANT_FILE # Stage our giant file for removal, but leave it on disk
-
--amend -CHEAD
를 사용하여 이 변경 내용을 커밋합니다.$ git commit --amend -CHEAD # Amend the previous commit with your change # Simply making a new commit won't work, as you need # to remove the file from the unpushed history as well
-
GitHub.com에 커밋을 푸시합니다.
$ git push # Push our rewritten, smaller commit
이전 커밋에서 추가된 파일 제거
이전 커밋에서 파일을 추가한 경우 리포지토리의 기록에서 파일을 제거해야 합니다. 리포지토리의 기록에서 파일을 제거하려면 git filter-repo
명령을 사용하는 것이 좋습니다. 자세한 내용은 Removing sensitive data from a repository(리포지토리에서 중요한 데이터 제거)을(를) 참조하세요.
또는 추가 도구를 설치하지 않으려는 경우 대화형 다시 지정을 사용하여 문제가 있는 커밋을 제거할 수 있습니다. 방법:
- 해당 파일을 추가하거나 수정한 커밋을 알아야 합니다.
- 커밋은 하나의 분기에만 있어야 합니다.
- 커밋이 적용된 이후 커밋이 속한 한 분기에는 병합이 없어야 합니다.
대화형 다시 지정에 대한 자세한 내용은 명령줄에서 Git 다시 지정 사용을(를) 참조하세요. 대화형 다시 지정을 사용하여 수정하는 데 필요한 조건을 충족하는지 확실하지 않은 경우
git filter-repo
를 사용해야 합니다.
큰 이진 파일 배포
리포지토리 내에 큰 파일을 배포해야 하는 경우 GitHub.com에 릴리스를 만들 수 있습니다. 릴리스를 사용하면 다른 사용자가 사용할 수 있도록 소프트웨어, 릴리스 정보, 이진 파일에 대한 링크를 패키지할 수 있습니다. 자세한 정보는 릴리스 정보을(를) 참조하세요.
릴리스에서 이진 파일의 총 크기 또는 파일을 배달하는 데 사용되는 대역폭은 제한하지 않습니다. 그러나 각 개별 파일은 2GiB보다 작아야 합니다.