본문 바로가기
카테고리 없음

[Github] Git LFS (Large File Storage) 사용법

by A6K 2021. 11. 1.

깃(git)은 분산 버전 컨트롤(Distributed Version Control) 시스템 중 가장 인기를 끌고 있는 프로그램이다. 소스코드에 대한 버전 관리를 하기 때문에 수 많은 작은 파일들의 버전을 관리하는데 최적화되어 있다.

하지만 프로젝트가 큰 용량의 파일을 포함하고 있는 경우에는 굉장히 비효율적이 된다. 특히 빈번하게 수정되는 큰 파일이 있는 경우, 모든 수정에 해당하는 파일들을 로컬에 다운로드해서 들고 있어야하기 때문에 저장소를 처음 clone 받을 때 과거 히스토리에 해당하는 큰 파일들을 모두 다운로드 해야하는 불편함이 있다.

게다가 깃허브(github) 등의 원격 저장소는 50MB 이상의 파일을 push 할 경우 경고를 주고 100MB가 넘어가는 파일은 push가 안된다. 따라서 깃으로 큰 파일이 포함되어 있는 프로젝트를 관리하려면 추가 플러그인이 필요하다. 이럴 때 쓰리고 만든게 'git lfs'다.


Git LFS (Large File Storage)

Git LFS는 Large File Storage를 이용해서 프로젝트에 큰 파일이 포함되어 있는 경우에 발생할 수 있는 깃의 태생적인 문제점을 해결하기 위한 깃의 Extension이다. Atlassian과 GitHub 그리고 몇몇 오픈소스 컨트리뷰터들이 함께 개발하고 있다.

출처 : git-lfs.github.com

Git LFS는 커다란 파일을 git이 직접 관리하지 않는다. 대신 Git LFS Cache라고 하는 곳에 별도로 저장하고 깃 프로젝트에서는 이 파일에 대한 작은 텍스트 포인터만 유지한다. 원격 저장소로 Push 할 때, Git LFS Cache에 있는 큰 파일은 Large File Storage에 저장되고 깃 원격 저장소에는 텍스트 포인터만 올라간다.

Git 저장소를 Clone하면 일단 텍스트 포인터만 다운로드되며, git checkout 으로 특정 커밋으로 돌아갈 때 원격 Large File Storage에서 텍스트 포인터에 해당하는 파일을 다운로드해서 Git LFS Cache로 저장한다. 즉, 커다란 파일의 히스토리에 해당하는 모든 파일을 다운로드하지 않고 Lazy하게 checkout시 다운로드해서 반영하는 방식으로 관리된다.

Git LFS는 처음 설정할 때를 제외하고 사용자에게 완전 Transparent하게 동작한다. 즉, 일단 설정만 해두면 사용자는 git lfs를 의식하지 않고 그냥 파일 추가, 커밋, push를 하면서 사용하면 된다.

깃허브 LFS 용량 조회

깃허브는 LFS를 위한 Large File Storage를 지원한다. 다만 1GB까지 파일을 올릴 수 있으며 추가 용량에 대해서는 유료 플랜을 구독해야한다. 깃허브 Large File Storage의 현재까지 사용용량은 계정 설정에서 조회할 수 있다.

계정의 설정(Settings) 페이지로 가보자.

Billing & Plans 메뉴를 선택하면

Git LFS Data에 대한 통계 정보가 나온다. 1GB를 다쓰면 돈내고 써야한다. 깃허브 엔터프라이즈의 경우에는 엔터프라이즈 관리자가 아니어서 잘 모르겠다.


Git LFS 설치

우선 깃의 extension인 git lfs를 설치해야한다. git lfs 홈페이지에서 설치 프로그램을 다운로드해서 설치하거나 macOS 사용자의 경우 brew install git-lfs 명령어를 이용해서 설치할 수 있다.

$ brew install git-lfs

우분투는

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

$ sudo apt install git-lfs

CentOS는

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

$ sudo yum install git-lfs

이렇게 설치하면 된다.


Git LFS 사용법

Git LFS를 사용할 로컬 저장소에서 다음을 실행한다.

$ git lfs install

이 명령을 실행하면 LFS를 사용하기 위한 설정 파일들과 디렉토리 같은 것들이 알아서 준비된다.

이제 LFS로 관리할 파일들을 지정해주면 된다.

// psd 확장자를 가진 파일들을 LFS로 관리
$ git lfs track "*.psd"

// 특정 파일을 LFS로 관리
$ git lfs track "images/MainLogo.psd"

마지막으로 .gitattributes 파일도 추가해준다.

$ git add .gitattributes

이제 평소처럼 git을 사용하면 백그라운드에서 Git LFS가 알아서 큰 파일들을 관리해준다.

댓글