‘일자리 시각화 경진대회’ 를 진행 중 수집한 데이터를 보관해야할 일이 생겼는데 Google Drive에 일일이 올리기 귀찮아 Github에 올리기로 했다. 하지만 git에 100mb이상의 파일을 올리려면 lfs를 사용해야하는데 사용하다 문제가 생겨서 사용을 그만두고 다시 google drive에 업로드하기로 결정했다.

나와 같은 상황의 유저들을 위해 사용하지 않기로한 이유를 먼저 밝히자면 아래와 같다.

Github LFS는 3.4GB 용량 제한이 있다. (Github페이지에서 추가적인 용량을 유료로 구매할 수 있음)

제한 용량을 넘게되면 아래와 같은 에러가 뜨면서 push가 안된다; 아래의 이유로 사용 2일만에 uninstall 하고 repo를 migration했다..

Uploading LFS objects:   0% (0/1), 0 B | 0 B/s, done.                                                                                                 
batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
error: failed to push some refs to '{repo url}'

이제 본격적으로 LFS에대해 알아보자.

1. LFS란

git-lfs homepage

Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.

특징

  • Large file versioning
  • More repository space
  • Faster cloning and fetching
  • Same Git workflow
  • Same access controls and permissions

데용량 데이터를 공유하며 개발을 진행해야할 경우가 종종 생긴다(게임 개발, DL의 weight 파일 공유). 이때마다 매번 파일을 직접 공유하는 번거로움을 해결하고자 개발되었다.

2. 사용법(Mac)

나는 맥북을 사용하기 때문에 Mac 기준으로 설치하는 방법을 작성하였다. 사용 및 설치가 굉장히 간편하다.

2-1. 설치

brew install git-lfs

먼저 brew를 이용하여 설치하고

git lfs install

git 명령어를 이용하여 설치해주면 설치 완료.

2-2. track

설치가 완료되었다면 lfs가 track할 파일을 설정해주고 .gitattributes에 추가해주면 된다.

git lfs track "*.pt"
git add .gitattributes

아래의 명령어를 사용하여 lfs로 관리되는 파일들을 확인할 수 있다.

git lfs ls-files --all

2-3. uninstall

.pt 확장자를 가진 파일 track 해제

git lfs migrate export --everything --include='*.pt'

lfs hook 제거

git lfs uninstall

커밋 히스토리에서 .gitattributes 파일 제거

git filter-branch -f --prune-empty --tree-filter '
  git rm -f .gitattributes --ignore-unmatch
' --tag-name-filter cat -- --all

저장 공간

lfs를 unistall하고 track해제해도 이미 차지하고 있는 저장공간은 돌아오지 않는다.. 그래서 난 그냥 repo를 migration하였다. 그냥 google drive에 올리고 링크 공유하는게 짱인듯ㅎㅎ