가끔 연구실에서 필요한 코드나 데이터를 github에 업로드할 때 수도없이 마주친 저 에러들 ...
저 오류가 뜰 때마다 쫌쫌따리로 올리고 못 올리는 건 포기했다가 이번에 마음 먹고 고쳐보기로 했다!
Git Large File Storage의 LFS로, 큰 파일들을 올리기 위한 곳이다. 그런데 아-주 큰 단점이 있다! 그것은 바로,
Github LFS는 용량 제한이 있다 (3.4GB)
물론 용량을 더 구매해서 쓸 수 있기도 한데 굳이 ㅎㅎ? ...
연구실 서버가 리눅스 기반이라 리눅스를 이용한다.
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs
이후에 git-lfs를 사용할 레포지토리로 이동한다. 그 후에
pip install git-lfs
간단하게 pip
를 통해 설치할 수 있다.
여기서 바로 git add .
를 해버리면 안된다. 그 전에 tracked, 혹은 staged 되어 있는 모든 파일들을 제거 해야 한다. unstage 방법은 아래 블로그를 참고하도록 하자.
(unstage 시키기)
그 후에는 lfs로 보낼 파일들을 따로 tracking 할 수 있도록 아래의 명령어를 써준다.
git lfs track "*.npy"
나는 대부분 큰 데이터들이 많았기 때문에 .npy
파일들만 관리해주려고 했는데 이마저도 안됨 ㅋㅋ... 파일 확장자명을 쓰지 않고도 해봤는데 아마도 안 되는 것 같다.
이 다음으로는 add
-> commit
-> push
의 순서를 거치면 되는데, add
를 할 때의 주의점은
git add .gitattributes
를 써주어야 한다는 것이다.
곧바로 uninstall을 하면 안되고 tracking을 먼저 해제 해야 한다.
git lfs migrate export --everything --include='*.npy'
이거 안해줬다가 안됨
다음에는 바로 lfs를 uninstall 시켜주면 된다.
git lfs uninstall
나는 해줬다가 실패 했으니 ... 커밋 히스토리에서 .gitattributes
파일까지 모두 제거해주었다.
git filter-branch -f --prune-empty --tree-filter '
git rm -f .gitattributes --ignore-unmatch
' --tag-name-filter cat -- --all
여러 군데 찾아본 결과, uninstall 하고 track을 해제하여도 이미 lfs가 차지하고 있는 저장 공간은 돌아오지 않는다고 한다 ^^... 일단은 좀 더 써보고 영 못해먹겠으면 새로 파든가 해야지 ...