• 100MB 가 넘어가는 파일은 깃허브에 커밋시에 해당 경고를 볼 수 있습니다.
  • 이때는 LFS를 이용하여 효율적으로 사용이 가능해집니다
  • 대부분의 경우 ignore 처리가 제대로 되지 않았을 경우 발생합니다.
  • 발생 안하는 것이 좋지만 발생한다면 처리해야 합니다.

LFS 설치

git lfs install

트래킹 파일 설정

  • Git 프로젝트안에서 대용량 파일을 확인하여 LFS 트래킹 설정을 해줍니다.
  • Git LFS(Large File Storage)는 대용량 파일을 별도의 서버에 저장하여 처리를 개선하도록 설계된 Git용 확장입니다.
  • 이는 오디오 샘플, 비디오, 데이터 세트 또는 그래픽 자산과 같은 대규모 바이너리 파일로 작업하는 시나리오에서 특히 유용합니다.

Git LFS 작동 방식

  1. 대형 파일 추적: Git LFS는 오디오, 비디오, 데이터세트 등 저장소의 대용량 파일을 작은 포인터 파일로 대체합니다. 이러한 포인터 파일은 대용량 파일을 참조하지만 크기가 훨씬 작습니다.
  2. 파일 저장: 대용량 파일 자체는 별도의 Git LFS 서버에 저장됩니다. 리포지토리를 복제하거나 가져오거나 가져오면 LFS 파일은 Git LFS 서버와 별도로 다운로드됩니다.
  3. 버전 관리: Git LFS 파일은 다른 Git 파일과 마찬가지로 버전이 관리됩니다. 저장소에 있는 포인터 파일의 각 버전은 LFS 서버에 있는 대용량 파일의 버전에 해당합니다.

주요 기능 및 이점

  • 향상된 성능: 대용량 파일이 별도로 저장되므로 Git 리포지토리는 가볍고 민첩하게 유지됩니다. 따라서 대용량 파일이 포함된 리포지토리의 복제 및 가져오기 시간이 더 빨라집니다.
  • 대형 파일에 대한 버전 제어: Git과 마찬가지로 LFS는 시간이 지남에 따라 대용량 파일의 변경 사항을 추적합니다. 이를 통해 변경 내역을 확인하고 필요한 경우 이전 버전으로 되돌릴 수 있습니다.
  • 효율적인 공간 사용: LFS는 저장소 기록에 있는 모든 대용량 파일의 모든 버전이 아닌 필요한 대용량 파일 버전만 다운로드하도록 보장합니다.

Git LFS 설정 및 사용

  • 설치: Git LFS는 Git의 확장으로 쉽게 설치할 수 있습니다.
  • 추적 파일git lfs track 명령을 사용하여 LFS로 추적하려는 파일 또는 파일 형식을 지정합니다.
  • 커밋 및 푸시: 평소와 같이 변경 사항을 커밋하고 푸시합니다. LFS 추적 파일은 Git LFS에 의해 자동으로 처리됩니다.
  • Clone and Pull: Git LFS를 사용하는 리포지토리에서 복제하거나 가져오는 경우 LFS 파일이 LFS 서버에서 자동으로 다운로드됩니다.

고려사항

  • 스토리지 및 대역폭 할당량: Git 호스팅 서비스에 따라 LFS에 사용할 수 있는 스토리지 및 대역폭의 양에 대한 할당량이 있을 수 있습니다.
  • 호환성: LFS 추적 파일을 올바르게 처리하려면 리포지토리 기여자가 Git LFS를 설치해야 합니다.
  • 마이그레이션: 기존 저장소에 LFS를 추가하는 경우 저장소 기록을 다시 작성하는 작업과 함께 대용량 파일을 LFS로 마이그레이션해야 합니다.

LFS Tracking

git lfs track "*.filetype*"
  • *.dylib 파일이 문제가 되므로 해당 파일을 트래킹 해줍니다.

git lfs track ".dylib"

.gitattributes 확인

git add .gitattributes
git commit -m "커밋 메세지"

대용량 파일 추가

git add 대용량 파일 Path

기존에 커밋했던 대용량 파일을 LFS로 이동

git lfs migrate import --include="*.dylib" --everything

깃 푸쉬

git push

만약 Push 과정에서 알 수 없는 버그 발생시

  • 대부분 History에 기존 커밋에 꼬이는 과정에 발생하는 것 으로 보입니다.
  • 이때는 해당 Commit을 Force 강제로 커밋하는 방법이 있습니다.
git push origin 브랜치 이름 --force