일단 필자의 경우는 깃허브 레파지토리에 수정된 폴더 구조와 파일들을 전부 커밋해놓은 상태에서 push 시 다음과 같은 용량 초과 error가 발생한 경우이다.
remote: error: File ...pcap is 189.76 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected.
[remote rejected] main -> main (pre-receive hook declined)
실수로 폴더 복제 과정에서 레파지토리 폴더에 용량이 큰 100MB 이상의 원본 데이터셋(.pcap 확장자)을 같이 넣어서 커밋하는 바람에 push가 거부된 것이다. 참고로 github의 일반 저장소는 100MB 이상 단일 파일은 업로드가 불가능하다.
Git LFS(Large File Storage)를 사용하여 깃허브에서 100MB 이상 파일을 저장할 수 있도록 허용할 수는 있겠지만, 일단 나의 경우는 실수로 이 대규모 데이터셋을 커밋한 상황이기 때문에 LFS보다는 이걸 다시 내리고 지우는 작업이 필요했음
따라서 이렇게 업로드가 불필요한 너무 큰 .pcap 파일을 제외시키기 위해 다음 과정을 수행했다.
- .gitignore로 제외하고 외부에 저장하는 방식
- 이는 .pcap 파일을 깃허브에 '절대 업로드하지 않을 경우'에만 사용해야 함을 주의하자. (저의 경우는 .pcap 파일이므로, 이 글을 보는 여러분들은 각자 제외시킬 파일의 확장자를 해당 부분에 입력하면 됩니다)
1. .pcap 파일을 git 기록에서 완전히 제거하기 (커밋 취소 + 캐시 제거)
- 이미 .pcap 파일이 commit된 상태이므로, 단순 삭제만으로는 깃허브에 push가 불가능하다.
- 따라서 git의 캐시에서도 제거하는 작업을 수행
# 캐시에서 제거 (참고: rm --cached는 로컬 파일은 그대로 두는 옵션)
git rm --cached Modularization/src/dataset/*.pcap
2. .gitignore에 제외 설정 추가
echo "*.pcap" >> .gitignore
git add .gitignore
3. 변경 사항 commit
git commit -m "Remove .pcap files and add to .gitignore"
4. 다시 push (이건 에러 발생하니 할 필요 X)
git push
그런데...
이제 잘 되려나 싶었다가 또 다시 동일한 오류가 발생했다.
이는 여전히 제외하고자 하는 대용량 *.pcap 파일이 git 기록에 포함되어 있어서 발생하는 문제라고 추론할 수 있다.
실제로 .pcap 파일을 git에서 제외하려면 파일 히스토리에서 완전히 제거해야 하기에 git rm --cached로는 기존 커밋에 포함된 파일을 제거할 수 없는 것으로 판단하였고, 파일을 git에서 완전히 제거하기 위해 BFG Repo-cleaner를 사용했음
bfg repo-cleaner는 java 기반 단일 .jar 파일로 제공되어 직접 wget으로 다운로드해서 실행해야 한다.
참고로 다음 단계부터는 캡처본 속 터미널 경로에 주목해야 함을 주의!! (터미널 경로가 중간에 와리가리 바뀝니다)
5. BFG .jar 파일 다운로드 (2025.07.10 기준 최신 ver.)
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar -O bfg.jar
6. Java 설치 (설치 안된 경우만)
sudo apt update
sudo apt install default-jre
7. 현재 project directory 백업해놓기 (중요)
- 강제 삭제가 들어가기 때문에 안전을 위해 전체 프로젝트를 cp -r로 복사하여 백업해둡시다
cp -r AERO AERO_backup
cd AERO # git 저장소에 .git 폴더가 포함된 폴더로 경로 이동
8. BFG로 .pcap 파일 제거
아래 명령어에서 ../bfg.jar는 제 레파지토리 기준 상위 폴더에 다운로드 한 경우를 기준으로 한 경로입니다. (각자 조정)
java -jar ../bfg.jar --delete-files '*.pcap'
9. Git 기록 정리
git reflog expire --expire=now --all
git gc --prune=now --aggressive
10. push 강제 실행
git push --force
위 과정을 거쳐 마침내 .pcap 파일이 완전히 제거 되었고, 나머지 코드만 깃허브에 정상적으로 올라가는 것에 성공하였다~
'Linux' 카테고리의 다른 글
[Ubuntu] Github SSH key 공개키 생성 및 등록하는 방법 | git clone 시 fatal: Authentication failed 오류 해결 (0) | 2025.07.09 |
---|---|
[Ubuntu] 우분투 24.04 카카오톡 설치 방법 (2) | 2025.06.27 |
[Linux] Byobu 란 무엇인가 — Byobu(뵤부) 사용법 및 단축키 모음 (1) | 2025.06.26 |
[Ubuntu] 네트워크 오류 해결 방법 - 우분투 22.04 인터넷 연결 안됨 (0) | 2025.04.04 |
[Linux] 드림핵 phpreg 문제 풀이 : 정규표현식 활용 (0) | 2024.12.20 |