Skip to main content

[git lfs track] 깃, 100MB 이상 파일 업로드 하기


깃을 사용하다보면 100MB 이상의 파일이 종종 생기는데, 이때 원격 저장소로 푸시를 하게되면 아래와 같이 에러가 뜨게 된다.

image


만약 git을 사용할때 100MB가 넘는 파일들이 많고, 수정이 많이 되는 파일들이라면 커밋을 할때마다 용량이 누적되고, 다른 협업자가 git pull을 입력하여 이전 커밋 기록들을 최신화 시켰을때, 많은 시간을 다운로드 받는데에 쓰게되어 생산성이 저하되기 때문에, git에서는 근본적으로 100MB가 넘는 파일들을 업로드 시키는 것을 금지시킨다.


하지만 100MB가 넘는 파일일지라도 꼭 업로드를 해야 한다면, Git Large File Storage (LFS)를 사용하면 된다.

git-lfs을 사용하게 되면 대용량 파일을 동일한 git 작업 공간이 아닌 다른 서버에 저장을 하게 되고, 그 포인터 값만 git 작업 공간에 저장을 하게되고, 이후 여러 커밋중 해당하는 커밋을 열람할때만 포인터가 가리키는 주소값에서 파일을 다운로드 하게되어 효율적이며, 초기 설정 이후에는, 평소에 쓰던 git 명령어로 똑같이 제어가 가능하여 편리하다.

다만 lfs 용량 제한이 있는데, Github와 Bitbucket은 1GB, GitLab은 10GB의 용량을 제공하고, 용량 추가시 돈을 지불해야한다.



0. 주의사항

깃허브에서는 추후에 모든 히스토리에서 lfs 추적이 해제된다 해도 lfs 저장공간은 그대로 차지하게되며, 현재로서 유일하게 저장공간을 비울 수 있는 방법은 깃허브에서 레포지토리를 삭제하고 다시 생성하는 방법 밖에 없다. 이 방법을 택하게 되면 issue, star, fork 등이 전부 초기화 되기 때문에 lfs를 적용하기에 앞서 주의가 필요하다.



1. git lfs 설치

git bash를 실행시켜 준 뒤, 아래 명령어를 입력하여 git lfs를 설치해준다.

git lfs install


2. 대용량 파일 추적

특정 파일만 추적할 수도 있으며, 특정 확장자 전체를 추적하고 싶다면 아래 명령어를 입력해준다.

모든 .ext 확장자들을 추적

git lfs track "*.ext"


3. 설정 파일 추가

git lfs에 대해 설정한 내용이 .gitattributes에 저장되어 있는데 이를 추가해준다.

git add .gitattributes


4. 원격저장소에 업로드하기

평소처럼 git add, git commit, git push를 사용하여 원격저장소에 업로드 하면 되고, 이후 원격 저장소에서 들어가보면, 지정했던 대용량 파일들은 아래와 같이 Stored with Git LFS 표시가 뜨게 된다.

image



5. git lfs 파일 추적

아래 명령어를 통하여, 모든 커밋에서 git lfs로 관리되는 파일들을 확인할 수 있다.

git lfs ls-files --all