git에 대용량 파일 올렸을 때

이혜령·2023년 2월 24일
0

작년 혼공단 활동 이후로 적지도 않았던 벨로그를 켰다.
정말 골머리 앓다 못해 짜증나 죽겠던 거 해결하고 잔디도 채운 기념 벨로그를 쓰기 위해...^^👍👍


깃허브를 쓰는 사람들이라면 알겠지만 깃허브에 100MB 이상 파일은 올라가지 않는다. 그렇지만 알고 있다고 해서 저런 에러 메세지를 피할 수 있다고는 하지 않았다.

나의 경우에는 최근 node.js 강의를 듣고 조금씩 공부하며 그 파일들을 저장해두기 위해 깃허브에 올리고 있었다. 저 에러 메세지가 떴던 당시에도 강의를 따라하며 대략 1GB 정도의 파일을 만드는 코드를 작성했다.

근데 앞서 말했지만 깃허브는


100MB 이상 파일은 올라가지 않는다.


그 결과 나는 앞서 올렸던 사진들의 에러와 마주치게 된다...

이런 경우에는 해결책이 두 가지가 있다.

  1. git lfs를 사용하기
  2. 그냥 대용량 파일을 지워 버리기

git lfs

위 에러 메세지를 보면


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

보통 검색해보면 bfg를 사용하는 방법을 얘기할 것이다.

https://rtyley.github.io/bfg-repo-cleaner/

하지만 나는 다운로드를 해야한다는 말에 다운로드 안 하고 해결하는 방법은 없나? 싶어서 다른 방법을 찾아보았다.

git filter-branch

나의 문제점은 파일만 지워졌지 커밋 히스토리에는 대용량 파일의 기록이 그대로 남아있다는 것이었다.

근데 커밋 히스토리 지울 줄을 몰라서... 정말 고생했다.

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

를 통해 푸시를 해주었다. 정말 감쪽같이, 아무 일도 없었던 것처럼 푸시가 잘 되었다.


머리 쥐어 뜯었던 시간은 길었지만 실제 문제 해결은 정말 얼마 걸리지도 않았다. 억울하지만 어떡하겠나요 제가 잘 몰랐기에 생긴 문제들을...

이렇게 시행착오 기록 겸 반성용 포스팅을 마친다...



참고한 글

profile
배운 거 대충 정리하는 블로그

0개의 댓글