GitHub에 코드를 올리다 막히는 곳은 대부분 세 군데입니다. 100MiB가 넘는 파일은 푸시가 거부되고, Git 명령에서는 계정 암호 대신 토큰을 넣어야 하며, 코드를 기여하는 계정은 2단계 인증을 켜지 않으면 접속이 막힙니다.
GitHub 파일 크기 제한 — 50MiB 경고, 100MiB 차단
GitHub에서 푸시가 실패할 때 가장 먼저 볼 것은 파일 크기입니다. 기준이 단계별로 나뉩니다.
| 구분 | 내용 |
|---|---|
| 50MiB 초과 | 경고만 표시, 푸시는 됨 |
| 100MiB 초과 | 푸시 차단 |
| 웹 브라우저로 추가 | 파일당 25MiB까지 |
| 저장소 전체 | 1GB 미만 이상적, 5GB 미만 권장 |
| 릴리스 첨부 파일 | 파일당 2GiB 미만, 릴리스당 최대 1000개 |
| 릴리스 총량·대역폭 | 제한 없음 |
웹에서 파일 추가 버튼으로 올릴 때는 명령줄보다 훨씬 작은 25MiB에서 막힙니다. 큰 파일은 명령줄이나 Git LFS로 올려야 합니다.
저장소가 지나치게 커서 서버에 부담을 주면 GitHub 지원팀이 정리를 요청하는 메일을 보냅니다. 공식 문서는 Git이 백업 도구가 아니며, 큰 데이터베이스 파일(SQL)은 Git으로 관리하도록 설계되지 않았다고 적고 있습니다. 외부 라이브러리를 통째로 넣으면 저장소가 빨리 커지므로 패키지 관리자로 받게 하라는 것도 공식 권장입니다.
설치 파일처럼 큰 결과물을 나눠 줘야 한다면 저장소에 커밋하지 말고 릴리스에 첨부합니다. 릴리스는 전체 용량과 내려받기 대역폭에 제한이 없고, 파일 하나만 2GiB 미만이면 됩니다.
GitHub 큰 파일을 커밋 기록에서 지우는 순서
큰 파일을 실수로 커밋했다면 다음 커밋에서 지우는 것만으로는 해결되지 않습니다. 이전 커밋에 파일이 남아 있어 푸시가 계속 거부됩니다.
아직 푸시하지 않은 마지막 커밋에 들어간 경우는 이렇게 고칩니다.
- 터미널(Windows는 Git Bash)을 열고 로컬 저장소 폴더로 이동합니다.
- git rm --cached 파일명 으로 파일을 추적에서 뺍니다. 디스크의 파일은 남습니다.
- git commit --amend -CHEAD 로 마지막 커밋을 고쳐 씁니다. 새 커밋을 하나 더 만드는 것으로는 안 됩니다.
- git push 로 다시 올립니다.
- 예전 커밋에 들어간 경우 — git filter-repo 로 기록에서 제거(공식 권장)
- 추가 도구 없이 — 대화형 리베이스로 해당 커밋 제거
- 리베이스 조건 ① — 파일을 넣은 커밋을 알고 있음
- 리베이스 조건 ② — 커밋이 한 브랜치에만 있음
- 리베이스 조건 ③ — 그 뒤로 병합이 없음
- 작업 전 — 저장소 밖 폴더에 파일 백업
기록을 지우는 작업은 파일을 영구히 없앱니다. 필요한 파일이면 저장소 밖에 복사본을 먼저 만들어 두세요.
GitHub 무료 플랜 Actions·Packages 한도
무료 계정도 공개·비공개 저장소를 개수 제한 없이 만들 수 있습니다. 비공개 저장소에서 쓰는 기능에는 월 할당량이 있습니다.
- Actions 분(Free) — 월 2,000분(비공개 저장소)
- Actions 분(Pro) — 월 3,000분
- 아티팩트 저장공간(Free) — 500MB · Packages와 함께 씀
- Actions 캐시 — 저장소당 10GB(별도)
- 공개 저장소 — 표준 러너 무료
- 초기화 — 매월 초 사용 분 0으로
막히는 지점은 계산 방식입니다. 10분짜리 작업이 5분 만에 실패하면 5분이 빠지고, 고쳐서 다시 성공시키면 총 15분이 빠집니다. 분은 실행한 사람이 아니라 저장소 주인에게 청구됩니다. 쓰기 권한이 있는 사람은 누구나 작업을 돌릴 수 있습니다.
결제 수단을 등록하지 않았다면 할당량을 다 쓴 순간 요금이 붙지 않고 사용이 막힙니다. 대형 러너는 공개 저장소에서도, 할당량이 남아 있어도 항상 유료이고 결제 수단이 없으면 늘 차단됩니다.
아티팩트는 지워도 그달에 이미 쌓인 저장 시간은 청구서에서 빠지지 않습니다. 저장공간은 시간 단위로 누적되기 때문입니다.
GitHub Git LFS 용량 계산과 초과 시 차단
Git LFS는 100MiB 넘는 파일을 다룰 때 씁니다. 저장소에는 포인터 파일만 두고 실제 파일은 따로 보관합니다.
- 파일당 최대(Free·Pro) — 2GB
- 파일당 최대(Team) — 4GB
- 저장공간(Free) — 10GiB
- 대역폭(Free) — 10GiB · 매 청구 주기 초기화
- 사용량 알림 — 90%·100% 도달 시 메일
- 결제 수단 없이 초과 — 새 파일 푸시 불가
용량이 생각보다 빨리 차는 이유가 있습니다. 500MB 파일을 1바이트만 고쳐 다시 푸시해도 저장공간이 500MB 더 늘어납니다. 파일 전체의 새 버전이 올라가기 때문입니다.
대역폭도 저장소 주인 몫으로 계산됩니다. 협력자가 내려받거나, 다른 사람이 포크해서 받거나, Actions 작업이 LFS 파일을 내려받아도 주인의 대역폭이 줄어듭니다. 업로드는 대역폭에 잡히지 않습니다.
달 중간에 LFS 파일을 지워도 그달 저장공간 사용량은 다시 계산되지 않고 다음 달 초에 초기화됩니다.
GitHub Pages 사용 조건과 한도
GitHub Pages는 저장소의 파일로 정적 웹사이트를 띄우는 기능입니다. 무료 플랜은 공개 저장소에서만 쓸 수 있고, 비공개 저장소에서 쓰려면 Pro 이상이 필요합니다.
- 사용자·조직 사이트 — 계정당 1개
- 원본 저장소 — 1GB 권장
- 게시된 사이트 — 1GB 이하
- 배포 시간 — 10분 넘으면 시간 초과
- 대역폭 — 월 100GB(소프트 한도)
- 빌드 횟수 — 시간당 10회(소프트 한도, Actions 워크플로 빌드는 제외)
Pages는 온라인 상거래나 유료 소프트웨어 서비스를 돌리는 호스팅으로 쓸 수 없고, 비밀번호나 카드번호를 주고받는 용도로도 쓰면 안 됩니다. 요청이 몰려 속도 제한에 걸리면 429 응답이 돌아옵니다. 한도를 넘기면 GitHub가 사이트 정리를 요청하는 메일을 보낼 수 있습니다.
기존 웹사이트를 학습용으로 따라 만드는 것은 허용되지만, 코드를 직접 작성하고 사용자 정보를 받지 않으며, 원본과 관계없는 교육용이라는 표시를 눈에 띄게 달아야 합니다.
GitHub 토큰 로그인·2단계 인증·계정 복구
명령줄에서 푸시할 때 Git이 암호를 물으면 계정 암호가 아니라 개인용 액세스 토큰을 넣어야 합니다. Git에서 암호 인증은 제거됐습니다. SSH 키를 등록해 쓰는 방법도 있습니다.
- Git 푸시 인증 — 개인용 액세스 토큰 또는 SSH 키
- 미사용 토큰 — 1년 동안 안 쓰면 자동 삭제
- 세분화 토큰 — 계정당 50개까지
- 2단계 인증 의무 — 2023년 3월부터 코드 기여 계정
- 등록 기간 — 알림 후 45일 + 유예 7일
- 권장 수단 — 인증 앱(TOTP), 백업으로 패스키·보안 키
릴리스를 만들거나 패키지를 게시하는 등 기여 활동을 한 계정은 2단계 인증 대상이 됩니다. 기간 안에 켜지 않으면 켤 때까지 GitHub.com 접속이 막힙니다. 이미 발급된 토큰은 계속 작동하지만 새 토큰은 만들 수 없습니다. 로그인 때 받는 이메일 인증은 2단계 인증으로 치지 않고, 지역에 따라 문자 인증이 지원되지 않아 인증 앱을 써야 하는 경우도 있습니다.
인증 기기를 잃었을 때 복구 순서는 이렇습니다.
- github.com/login 에서 아이디와 암호를 입력합니다.
- '추가 옵션'에서 2FA 복구 코드를 고르고 코드 하나를 입력합니다. 기본 파일 이름은 github-recovery-codes.txt 입니다.
- 코드가 없으면 '계정 또는 메일 복구 시작'을 눌러 메일로 받은 일회성 암호를 넣습니다.
- 이전에 로그인한 기기, 등록한 SSH 키, 개인용 액세스 토큰 중 하나로 본인 확인을 하고 지원팀 검토를 기다립니다.
공식 문서는 복구 수단을 모두 잃으면 계정에 영영 들어가지 못할 수 있다고 경고합니다. 브라우저가 매일 쿠키를 지우게 설정돼 있으면 '확인된 기기'로 복구할 수 없으니 이 점도 확인해 두세요.
자주 묻는 질문
GitHub에 100MB가 넘는 파일을 올릴 수 있나요?
일반 커밋으로는 안 됩니다. 100MiB가 넘는 파일은 푸시가 거부되고, 웹 브라우저로는 25MiB까지만 올라갑니다. Git LFS를 쓰면 무료 플랜에서 파일당 2GB까지 올릴 수 있고, 배포용 파일은 릴리스에 첨부하면 파일당 2GiB 미만까지 됩니다.
GitHub에서 큰 파일을 지웠는데 왜 푸시가 계속 안 되나요?
이전 커밋에 파일이 남아 있기 때문입니다. 아직 푸시하지 않은 마지막 커밋이면 git rm --cached 와 git commit --amend -CHEAD 로 고치고, 예전 커밋이면 git filter-repo 로 기록에서 지워야 합니다.
GitHub 푸시할 때 암호를 넣었는데 실패합니다.
Git에서 계정 암호 인증이 제거됐기 때문입니다. 암호를 묻는 칸에 개인용 액세스 토큰을 넣거나 SSH 키를 등록해 써야 합니다. 1년 동안 쓰지 않은 토큰은 자동으로 지워집니다.





