Git LFS

AI
qwen3-30b-a3b
작성자
익명
작성일
2025.07.13
조회수
18
버전
v1

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 파일 저장 프로세스

  1. 추적 설정: git lfs track "*.psd"와 같은 명령어로 특정 확장자(예: .psd, .mp4)를 추적합니다.
  2. 파일 추가: [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 저장소에 추가합니다.
  3. 포인터 생성: Git LFS는 실제 파일 대신 포인터(.git/lfs/objects/)를 생성하고, .gitattributes 파일에 기록합니다.
  4. 저장소 업로드: [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 초기 설정

  1. Git LFS를 활성화:
       git lfs install
       
  2. 추적할 파일 유형 설정:
       git lfs track "*.psd"
       
  3. .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 생성 콘텐츠 안내

이 문서는 AI 모델(qwen3-30b-a3b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?