Git LFS
Git LFS
개요
Git LFS (Large File Storage)는 Git에서 대규모 파일을 효율적으로 관리하기 위한 확장 기능입니다. 표준 Git은 큰 파일(예: 이미지, 동영상, 데이터베이스 백업 등)을 처리할 때 성능 저하와 저장소 크기 증가 문제를 겪습니다. Git LFS는 이러한 한계를 극복하기 위해 대용량 파일을 외부 서버에 저장하고, Git 저장소에는 단순한 포인터(텍스트 파일)만 유지합니다. 이 문서에서는 Git LFS의 개념, 기능, 사용 방법 및 라이선스 정보를 상세히 설명합니다.
1. Git LFS란?
1.1 기본 개념
Git LFS는 Git의 확장 모듈로, 대규모 파일을 저장소에 직접 포함하는 대신 외부 서버(예: GitHub, GitLab 등)에 저장하고, Git 저장소에는 해당 파일의 포인터 정보만 기록합니다. 이 방식은 저장소 크기 축소와 성능 향상에 도움이 됩니다.
1.2 주요 문제 해결
- 표준 Git의 한계:
- 대용량 파일을 관리할 때 저장소 크기가 급격히 증가합니다.
- 파일 다운로드 시 네트워크 부하와 시간이 늘어납니다.
- Git LFS의 해결 방안:
- 실제 파일은 외부 서버에 저장되고, Git 저장소에는 파일의 해시 값과 URL을 포함한 포인터만 저장됩니다.
2. 주요 기능 및 장점
2.1 핵심 기능
기능 | 설명 |
---|---|
포인터 기반 저장 | 대용량 파일 대신 텍스트 형식의 포인터를 Git 저장소에 저장합니다. |
자동 관리 | git lfs track 명령어로 특정 파일 유형을 추적 설정하여 자동으로 처리합니다. |
다중 서버 지원 | GitHub, GitLab, AWS S3 등 다양한 외부 저장소와 호환됩니다. |
2.2 장점
- 저장소 크기 최소화: 실제 파일은 외부에 저장되므로 Git 저장소의 용량이 줄어듭니다.
- 성능 향상: 대용량 파일을 다운로드할 때 네트워크 전송 시간이 감소합니다.
- 버전 관리 가능성: 포인터는 Git의 버전 관리 기능과 연동되어 변경 이력을 추적할 수 있습니다.
3. 작동 원리
3.1 파일 저장 프로세스
- 추적 설정:
git lfs track "*.psd"
와 같은 명령어로 특정 확장자(예:.psd
,.mp4
)를 추적합니다. - 파일 추가:
[git add](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%8B%A4%EC%8B%9C%EA%B0%84%20%EC%BD%94%EB%94%A9/git%20add) large_file.psd
명령어로 파일을 Git 저장소에 추가합니다. - 포인터 생성: Git LFS는 실제 파일 대신 포인터(
.git/lfs/objects/
)를 생성하고,.gitattributes
파일에 기록합니다. - 저장소 업로드:
[git push](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EB%B2%84%EC%A0%84%EA%B4%80%EB%A6%AC/git%20push)
명령어로 포인터와 외부 서버에 저장된 실제 파일을 동기화합니다.
3.2 파일 다운로드 프로세스
- 클론 시 Git LFS는
.gitattributes
파일을 기반으로 대용량 파일을 자동으로 다운로드합니다. git lfs pull
명령어를 사용해 특정 파일만 별도로 다운로드할 수 있습니다.
4. 설치 및 설정
4.1 설치 방법
Linux (Ubuntu)
sudo apt-get install git-lfs
macOS (Homebrew)
brew install git-lfs
Windows (Chocolatey)
choco install git-lfs
4.2 초기 설정
- Git LFS를 활성화:
git lfs install
- 추적할 파일 유형 설정:
git lfs track "*.psd"
.gitattributes
파일 커밋:
git add .gitattributes git commit -m "Add LFS tracking for PSD files"
5. 사용 예시
5.1 대용량 파일 추가
# 특정 확장자 추적 설정
git lfs track "*.mp4"
# 파일 추가 및 커밋
git add large_video.mp4
git commit -m "Add video file with LFS"
5.2 외부 저장소에 업로드
git push origin main
이 명령어는 포인터와 실제 파일을 GitHub 등 외부 서버에 동시에 업로드합니다.
6. Git LFS vs 표준 Git
항목 | Git LFS | 표준 Git |
---|---|---|
파일 저장 방식 | 포인터(텍스트) + 외부 서버 저장 | 실제 파일 직접 저장 |
저장소 크기 | 작음 | 큼 |
성능 | 빠름 (대용량 파일 다운로드 시) | 느림 (대용량 파일 다운로드 시) |
사용 목적 | 대규모 파일 관리 | 소규모 코드 및 텍스트 파일 관리 |
7. 라이선스 정보
7.1 사용 라이선스
Git LFS는 MIT License 하에 공개됩니다. 이 라이선스는 다음과 같은 권리를 제공합니다:
- 프로그램을 자유롭게 사용, 복사, 수정, 재배포할 수 있습니다.
- 소프트웨어의 사용 목적과 상관없이 무료로 이용 가능합니다.
7.2 제한 사항
- MIT License는 보증이나 책임에 대한 명시가 없습니다.
- 프로그램을 수정하여 재배포할 경우, 원본 라이선스와 저작권 정보를 유지해야 합니다.
참고 자료 및 관련 문서
이 문서는 Git LFS의 기능, 작동 원리 및 라이선스에 대한 기본 정보를 제공합니다. 실제 사용 시 공식 문서와 함께 참고하시기 바랍니다.
이 문서는 AI 모델(qwen3-30b-a3b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.