next.js + yarn 프로젝트를 만들고 GitHub에 푸시하는 과정에서 오류가 발생했다.
remote: error: See https://gh.io/lfs for more information.
remote: error: File .yarn/unplugged/@next-swc-win32-x64-msvc-npm-.../node_modules/@next/swc-win32-x64-msvc/next-swc.win32-x64-msvc.node is 129.50 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
Yarn은 압축 파일로 의존성을 관리하는데, 직접 실행해야 하는 바이너리나 스크립트 같은 경우 .yarn/unplugged 폴더에 따로 저장한다. 여기에 130MB짜리 swc가 커밋에 포함되어 있어 푸시가 되지 않았다.
(yarn v4.3.1 문서를 보면 .pnp 및 .yarn/cache가 생겨야만 할 것 같은데 깃 무시 목록에 추가된 .yarn/install-state.gz 하나로 관리되고 있는 걸 보니 업데이트하면서 바뀌었거나 PnP를 잘못 설정한 것 같기도 하다)
프로젝트에 초기 커밋 1개만 존재하던 상태여서 .yarn/unplugged 폴더를 .gitignore에 추가 후 아래 명령어로 변경 내용을 반영했다.
git rm -r --cached. # 스테이징 영역에서 모든 파일을 제거한다, 작업 디렉토리에는 남아있다
git add .
git commit --amend
이미 그 이후에 커밋을 잔뜩 했다면 Removing files from a repository's history을 참고하여 기록을 지워버리자. (단순히 파일을 삭제하고 커밋하는 것으로는 기록에 해당 오브젝트 파일이 남아있기 때문에 깃 로컬 저장소에서 삭제되지 않는다.)