티스토리 뷰

개발/git

GIT LFS(Large File Storage)란?

애쿠 2023. 2. 20. 01:05

GIT LFS(Large File Storage)란?

앞서 다뤘던 git은 소프트웨어 개발 프로젝트를 관리하는 데 범용적으로 사용되는 버전 제어 시스템(Version Control System)이다. 하지만 소스 코드들을 담고 있는 여러 개의 작은 텍스트 파일만 처리하도록 설계되었다.

 

때문에 프로젝트 내의 리소스 파일의 크기가 클 경우 문제가 될 수 있는데,

 

이 프로젝트를 git으로 관리 할 경우, 이력 파일의 크기도 함께 늘어나게 되어 git clone, git pull 동작 시 프로젝트를 불러오는데 오랜 시간이 걸리는 문제가 발생한다.
(이때 시간만 오래걸리면 다행이다. 저장소로 사용되는 서버가 죽는 경우도 발생한다고 한다.)

 

이를 위해 remote 저장소에서 대용량의 파일 원활히 다루기 위해, 해당 파일을 별도의 저장소에 저장하고 다운로드 하는 기능이 추가되었다.

 

이 기능이 GIT LFS(Large File Storage) 다.

 

사용법

서두에서 필요성을 강조한데 비해 사용법은 간단하다.

 

1. 설치 및 설정

일반적으로 git을 설치하면 같이 설치되지만, 만약 설치가 되어있지 않다면 설치를 진행한다.

apt-get install git-lfs

먼저, 로컬 저장소에 git lfs의 설정 파일들을 설치해야한다.

git lfs install
Updated git hooks.
Git LFS initialized.

아래와 같은 알림이 나왔다면 정상적으로 설정됐다는 것이다.

 

2. GIT-LFS로 지정할 파일 제외시키기

앞으로 GIT-LFS로 업로드될 파일은 굳이 리모트 저장소에 업로드할 필요가 없다. 업로드시 해당 파일을 git에서 확인하지 않아도 되는 상태로 만들어 두는게 좋다.

 

다만, 파일은 계속 로컬에 남아있어야하기 때문에 --cached 설정을 사용한다.

git rm --cached path/to/large/file

이렇게 하면 내가 파일을 정상적으로 업로드 했는지 어떻게 확인하지? 라고 걱정할 필요 없다. 해당 파일의 경로를 가리키는 포인터 형태로 repository에 저장되기 때문이다.

 

3. 파일 지정 및 push하기

다음은 어떤 파일을 추적할지 지정해 주어야한다.

git lfs track path/to/large/file

어떤 파일을 추적할지 지정해 주면, 로컬저장소에 .gitattributes란 파일이 생성된다.

 

이 파일을 열어보면 별다른 내용은 없다.

path/to/large/file filter=lfs diff=lfs merge=lfs -text

다른 파일을 추적하고 싶다면 이 파일의 경로를 바꿔주면 되고, 설정을 해제하려면 .gitattributes 파일을 삭제 해준 후 push 해두면 된다.

 

이 파일을 레포지토리에 push 해 두어야한다.

git add .gitattributes
git add path/to/large/file # 파일은 예시로 포함 시킴
git commit -m "Add large file using Git LFS"
git push origin branch-name

이렇게 push 해두면 저장소에는 별 다른 이력이 남지 않지만, git lfs에 저장된다.

 

4. 해제

git lfs uninstall

 

5. 주의할 점

일단 다행인 점은 일반적인 리모트 저장소로 활용되는 GitHub과 Bitbucket 모두 프리티어로 일정량의 bandwidth와 storage를 제공한다.

 

단, 매달 bandwitdth 1GB와 stroage 1GB만 제공한다.

 

무제한 사용이 불가능하다는 점을 유의해야 한다.

 

 

또다른 주의할 점은 GIT-LFS의 주의할 점은 아니고 저장소 특성에 따른 주의할 점이다.

 

GitHub의 경우는 개별 파일 업로드를 100MB로 제한하기 때문에, 위 문제를 겪기 전인 업로드 단계에서 컷 당했을 것이다. (프로젝트 크기가 100MB가 넘는 경우가 아니라 "개별" 파일의 크기)

 

하지만 BitBucket은 따로 제한을 두지 않는다. 때문에, 큰 프로젝트 파일을 압축 파일로 묶어서 주고 받을 때 문제가 생길 수 있다.

 

우리 프로젝트는 Bitbucket을 사용 중이어서 서두에 언급했던 문제(무한 로딩에 가까운 git clone/pull 대기 시간)가 발생했었다.

'개발 > git' 카테고리의 다른 글

Git이란? (4) - branch란?  (0) 2023.02.19
Git이란? (3) - gitignore / git reset 제대로 알고가기  (0) 2023.02.17
Git 이란? (2) - Git 명령어  (0) 2023.01.29
Git 이란? (1) - Git 기초  (0) 2023.01.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함