Version/Git

[Git] LFS 환경 구축

nowkoes 2023. 7. 7. 15:57

Git LFS 환경 구축

개요

파일 용량이 100MB가 넘어갔을 때 발생하는 에러

 

 Git은 프로그래밍에서 꼭 필요한 도구 중 하나다. 효율적인 코드 관리와 협업을 가능하게 하는 이 도구는 우리가 언제, 어디서든 코드의 변경 이력을 관리하도록 돕는다. 하지만, 때때로 우리는 위와 같은 에러 메시지와 마주하게 된다. 즉,  큰 파일을 Git에 추가하려고 하면 Git은 용량 제한에 걸려 자신의 작업을 완료하지 못하게 된다. 이 문제는 특히 게임 개발, 데이터 분석, 그래픽 작업 등 대용량 파일이 필요한 작업에서 두드러진다.

 이를 해결하기 위해 Git에서는 Large File Storage (LFS)를 소개하고 있다. Git LFS는 Git 속성을 이용해 대용량 파일을 관리하는 확장 기능이다. LFS를 사용하면 대용량 파일들은 별도의 서버에 저장되고, Git 저장소는 이 파일들에 대한 포인터만을 포함하게 된다. 이렇게 함으로써, 저장소의 크기를 작게 유지하면서도 대용량 파일을 효과적으로 관리할 수 있다.

 이 글에서는 Git LFS를 설치하고 설정하는 방법에 대해 간략히 소개하겠다. 이 방법을 사용하면 대용량 파일이 필요한 프로젝트를 더 쉽게 관리하고, Git의 용량 제한 문제를 우회할 수 있다. 이는 깃허브 공식 문서에서 자세히 설명하고 있지만, 이 글은 그 과정을 간결하게 요약하여 필요한 내용만 쉽게 찾을 수 있도록 하기 위해 작성되었다. 이제부터는 용량 제한 없이 Git을 활용해 보자.


LFS란?

 Git Large File Storage(LFS)란 Git이 대용량 파일을 처리하는 방식을 대체하는 오픈 소스 확장이다. Git의 기본 작동 원리는 전체 프로젝트의 모든 파일과 파일의 모든 버전을 로컬 저장소(리포지토리)에 저장하는 것이다. 이는 소스 코드와 같은 작은 파일에 대해서는 매우 효율적이지만, 그래픽, 오디오, 비디오 등과 같은 대용량 파일에 대해서는 비효율적일 수 있다.

 

출처: https://git-lfs.com/

 

 앞서 설명했듯이 Git LFS는 대용량 파일을 별도의 서버에 저장하고, 해당 파일을 가리키는 포인터만을 로컬 Git 저장소에 유지한다. 이 포인터는 매우 작은 크기의 텍스트 파일로, 실제 파일이 어디에 있는지 그리고 그 파일에 어떻게 접근할 수 있는지에 대한 정보를 담고 있다. 'track'이라는 명령어를 사용하면, 특정 파일이나 파일 유형을 Git LFS를 통해 관리하도록 지정할 수 있다. 이렇게 지정하면, 해당 파일들은 직접 Git 저장소에 저장되는 것이 아니라 LFS를 통해 처리된다.

 따라서, 해당 파일들을 로컬 저장소에 추가하고 커밋하면, 실제 파일이 아닌 그 파일을 가리키는 포인터가 로컬 저장소에 추가된다. 이 방식으로, 대용량 파일 자체는 별도의 LFS 서버에 저장되고 로컬 Git 저장소는 그 파일을 가리키는 포인터만을 유지함으로써, 대용량 파일을 효율적으로 관리할 수 있게 된다.


LFS 적용

실험 파일 example.zip

 

 이제 Window 환경에서 내 Repository에 LFS를 적용시켜 로컬 저장소에 대용량 파일을 업로드해보자. 실험을 위해 100MB 넘는 파일을 임의로 압축하여 사용하겠다.

 

출처: https://git-lfs.com/

 

 먼저 Git lfs 공식 홈페이지에서 해당 파일과, 명령어를 입력할 Git Bash를 다운로드한다. 그리고 파일을 실행시켜 Git LFS를 설치해 준다. 그후 옮길 파일이 있는 폴더를 Git Bash를 이용해 열어주고, 해당 명령어를 입력하여 lfs를 설치해준다. 필자의 경우 example이라는 리포지토리에 example.zip 파일을 옮길 예정이니 다음과 같은 화면일 것이다.

git lfs install

 

 이제 특정 파일 유형을 LFS로 관리할 수 있게 설정해야 한다. 우리가 관리할 확장자는 .zip 이므로 다음과 같은 명령어를 사용하면 된다.

git lfs track "*.확장자"

 

 여기까지 잘 따라왔다면, 폴더에 .gitattributes라는 파일이 생겼을 것이다. 여기에 파일의 변경 사항을 스테이징해줘야 하므로 다음과 같은 명령어를 사용하여 커밋을 생성하자.

git add .gitattributes
git commit -m "메시지"

 

 그 후 example.zip 파일을 커밋하고 푸시하면 된다.

git add 파일명.확장자
git commit -m "메시지"
git push origin main

 

반응형