Git에서 대용량 파일의 미래는 Git이다
대용량 파일을 Git 저장소에서 효율적으로 관리할 수 있는 Git LFS(Large File Storage) 확장 도구에 대한 실무 가이드
Git LFS란?
Git LFS는 대용량 파일(이미지, 비디오, 오디오, 바이너리 파일 등)을 Git 저장소에서 별도로 관리할 수 있게 해주는 확장 도구입니다. 일반 Git은 텍스트 파일 변경사항을 추적하는 데 최적화되어 있어, 대용량 바이너리 파일을 처리할 때 저장소 크기가 급격히 커지는 문제가 발생합니다.
작동 원리
- Git LFS는 대용량 파일을 실제 저장소에 저장하는 대신, 작은 포인터 파일로 대체
- 실제 파일 내용은 별도의 LFS 서버에 저장
- 체크아웃 시 포인터 파일이 실제 파일로 자동 교체됨
설치 및 설정
# Git LFS 설치 (Ubuntu/Debian)
sudo apt install git-lfs
# Git LFS 초기화
git lfs install
# 특정 파일 타입을 LFS로 추적
git lfs track "*.jpg"
git lfs track "*.png"
git lfs track "*.pdf"
# .gitattributes 파일 커밋
git add .gitattributes
git commit -m "Add LFS tracking"
주요 명령어
# LFS로 추적되는 파일 목록 확인
git lfs ls-files
# LFS 상태 확인
git lfs status
# 특정 파일을 LFS로 추적
git lfs track "large-file.zip"
# LFS 파일 다운로드
git lfs pull
# LFS 객체 정보 확인
git lfs ls-files --size
실무 활용 팁
1. 적절한 파일 타입 선택
- 이미지, 비디오, 오디오 파일
- 컴파일된 바이너리
- 압축 파일
- 100MB 이상의 파일들
2. .gitattributes 관리
프로젝트 루트의 .gitattributes
파일에서 LFS 규칙을 중앙 관리할 수 있습니다.
3. 협업 시 주의사항
- 팀원들도 Git LFS를 설치해야 함
- 초기 클론 시
git clone
후git lfs pull
필요 - 또는
git clone
시--recurse-submodules
옵션 사용
한계점과 고려사항
- 저장 비용: LFS 서버 저장소 비용 발생
- 네트워크 의존성: 파일 접근 시 네트워크 연결 필요
- 호스팅 제한: GitHub 등에서 LFS 용량 제한 있음
- 복잡성 증가: 일반 Git 워크플로우보다 복잡
대안 솔루션
대용량 파일이 많은 프로젝트의 경우 Git LFS보다는:
- DVC(Data Version Control): ML/데이터 과학 프로젝트용
- 별도 저장소 분리: 코드와 에셋을 완전히 분리
- 클라우드 스토리지 연동: S3, GCS 등과 직접 연동
Git LFS는 소규모~중간 규모의 대용량 파일 관리에 효과적이지만, 대규모 데이터나 빈번한 변경이 있는 파일에는 다른 솔루션을 고려해보는 것이 좋습니다.