본문 바로가기
Development/Free Topic

Git Large File Storage(LFS) 사용하기

by 곽동현 이스텔리앙 2020. 3. 30.

Git의 용량제한

기본적으로 git은 여러개의 작은 소스코드 파일들을 위한 버전 컨트롤 시스템(VCS)이다. 따라서 Github의 경우 50Mb부터 Warning이 표시되고, 100Mb부터는 push시 Error가 발생한다. 그럼에도 불구하고 경우에 따라서 반드시 대용량 파일을 git repo에 포함시켜야하는 상황이 존재할 수 있다(예를 들면 학습된 모델파라미터를 올려야할 때). 이러한 경우에 사용할 수 있는 해결책인 Git LFS(Large File Storage)을 소개한다.

기본적인 사용방법은 모두 다음 블로그에서 가져왔다.

Git LFS 설치하기

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs


File upload하기

먼저 lfs를 사용하고자 하는 repo에서 다음을 입력하여 lfs가 사용가능하도록 만들어야한다.

git lfs install

그 다음 lfs로 관리할 파일을 입력한다. (반드시 git add보다 먼저 git lfs track을 해주어야한다. 그렇지 않으면 100MB exceed 에러가 발생한다.)

git lfs track "파일 full path"

lfs로 트래킹하는 파일에 대한 정보가 특이하게도 .gitattributes을 통해서 관리가 되어 이를 꼭 add해주어야한다.

git add .gitattributes

나머지는 일반적인 git push와 동일하다.
git add .
git commit
git push

File Download하기

LFS를 사용한 repo의 경우 무조건 lfs를 install한 상태에서 git clone을 해야만 제대로 사용가능하다. 먼저 clone을 하고나서 pull이나 fetch를 해서는 제대로 lfs가 동작하지 않고, shortcut만 가져오게 된다.


git lfs install

git clone [url]


기타 명령어

git lfs ls-files : lfs로 관리중인 파일 목록 확인




# Trouble Shooting

Locking support detected on remote "origin". Consider enabling it with:

lfs가 포함된 파일을 push했을 때 위와 같은 메시지가 뜨는 경우, 그 에러 메시지 바로 아레에 git config를 이용한 해결법이 나온다. 이를 그대로 복사해서 입력해준다.

$ git config 'lfs.https://github.com/<my_repo>.git/info/lfs.locksverify' true



dial tcp: lookup lfs.github.com: no such host

이러한 에러 발생시 DNS 서버에 해당 도메인이 제대로 처리되지 않아서 발생하는 것이었다. 따라소 매우 손쉽게 hosts에 직접 해당 domain의 ip를 등록하여 해결하였다.


https://github.com/git-lfs/git-lfs/issues/2887

https://newsight.tistory.com/266




remote: error: File vanilla-app.zip is 129.25 MB; this exceeds GitHub's file size limit of 100.00 MB

lfs로 관리할 파일들은 반드시 git add로 staging을 하기 전에 git lfs track으로 해당 파일을 입력해야한다. 만약 실수로 순서를 틀렸을 경우 위와 같은 에러메시지가 발생한다. 해결 방법은 git reset 으로 staging을 취소한다음 다시 올리면 된다.


https://github.com/git-lfs/git-lfs/issues/1933



댓글0