작년 혼공단 활동 이후로 적지도 않았던 벨로그를 켰다.
정말 골머리 앓다 못해 짜증나 죽겠던 거 해결하고 잔디도 채운 기념 벨로그를 쓰기 위해...^^👍👍
깃허브를 쓰는 사람들이라면 알겠지만 깃허브에 100MB 이상 파일은 올라가지 않는다. 그렇지만 알고 있다고 해서 저런 에러 메세지를 피할 수 있다고는 하지 않았다.
나의 경우에는 최근 node.js 강의를 듣고 조금씩 공부하며 그 파일들을 저장해두기 위해 깃허브에 올리고 있었다. 저 에러 메세지가 떴던 당시에도 강의를 따라하며 대략 1GB 정도의 파일을 만드는 코드를 작성했다.
근데 앞서 말했지만 깃허브는
100MB 이상 파일은 올라가지 않는다.
그 결과 나는 앞서 올렸던 사진들의 에러와 마주치게 된다...
이런 경우에는 해결책이 두 가지가 있다.
위 에러 메세지를 보면
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
이 메세지가 있는데, 여기서 권하는 방법이 바로 git lfs를 사용하는 것이다.
여기서 말하는 git lfs란?
100MB 이상의 파일이 있을 때 지정한 파일을 작게 조각내어 커밋을 할 수 있도록 도와준다.
하지만 나는 문제가 된 대용량 파일이 꼭 올려야 하는 중요한 파일이 아니었기에 지우는 방법을 택했다.
여기서부터 내 시행착오가 시작된다.
나는 그냥 문제가 되는 파일을 지우면 되겠거니 했고, 실제로도 그 파일들만 지우고 커밋 후 다시 푸시했지만 똑같은 에러 메세지를 마주했다. 그렇게 내 고생길이 시작됐다.
보통 검색해보면 bfg를 사용하는 방법을 얘기할 것이다.
https://rtyley.github.io/bfg-repo-cleaner/
하지만 나는 다운로드를 해야한다는 말에 다운로드 안 하고 해결하는 방법은 없나? 싶어서 다른 방법을 찾아보았다.
나의 문제점은 파일만 지워졌지 커밋 히스토리에는 대용량 파일의 기록이 그대로 남아있다는 것이었다.
근데 커밋 히스토리 지울 줄을 몰라서... 정말 고생했다.
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 경로/경로/파일명.확장자' --prune-empty --tag-name-filter cat -- --all
길다...
문제가 생긴 폴더에서 git bash를 통해 위 명령어를 작성하고
git push origin --force --all
를 통해 푸시를 해주었다. 정말 감쪽같이, 아무 일도 없었던 것처럼 푸시가 잘 되었다.
머리 쥐어 뜯었던 시간은 길었지만 실제 문제 해결은 정말 얼마 걸리지도 않았다. 억울하지만 어떡하겠나요 제가 잘 몰랐기에 생긴 문제들을...
이렇게 시행착오 기록 겸 반성용 포스팅을 마친다...