대용량 파일 업로드(LFS) 사용

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

Git 리포지토리에 업로드할 수 있는 파일 용량은 최대 500 MB로 제한되지만 Git LFS(Large File System)를 활용하면 Git 리포지토리에서 대용량 파일(파일 당 최대 5 GB)의 버전 관리를 수행할 수 있습니다. Git LFS는 대용량 파일에 대한 메타데이터(metadata)만 리포지토리에 커밋하고 실제 파일 내용은 별도의 원격 저장소에 저장하는 방식으로 작동합니다.

Git LFS를 이용하려면 Git 클라이언트와 Git LFS를 로컬 PC에 설치해 주십시오.

  • GIT 공식 사이트에서 Git 클라이언트 설치 파일을 다운로드해 설치하고 자세한 사용법을 확인해 주십시오.
  • GIT LFS 공식 사이트에서 Git LFS 설치 파일을 다운로드해 설치하고 자세한 사용법을 확인해 주십시오.
  • Git LFS는 HTTPS 연결만을 지원하며 SSH 연결은 지원하지 않습니다.
참고
  • 공통 프로젝트를 위해 Git LFS가 적용된 리포지토리를 공유하는 경우 모든 프로젝트 구성원이 로컬 PC에 Git LFS를 설치하고 Git LFS의 작동 원리와 사용법을 숙지하도록 해 주십시오.
  • Git LFS가 설치되지 않은 로컬 PC에서는 LFS 기능을 이용한 대용량 파일 관리 및 파일 잠금을 수행할 수 없습니다.
  • Git LFS를 다운로드하고 설치한 후에는 다음과 같이 작업 중인 리포지토리 경로에서 Git LFS를 초기화해 주십시오.
    $ git lfs install
    
    Git LFS initialized.
    
    Bash

Git LFS를 이용해 대용량 파일을 업로드하는 방법은 다음과 같습니다.

이 사용 가이드에서는 로컬 리포지토리에서 Git LFS를 초기화한 후 특정 파일에 대해 트래킹을 설정하고 원격 리포지토리로 업로드(push)하는 방법을 간략한 예제로 설명합니다. Git LFS 사용 방법에 대한 자세한 내용은 GIT LFS 공식 사이트를 참고해 주십시오.

  1. 로컬 PC에서 Git Client를 실행한 후 작업할 리포지토리 경로로 이동해 주십시오.
  2. Git LFS 초기화를 수행해 주십시오.
    $ git lfs install
    
    Git LFS initialized.
    
    Bash
  3. 업로드할 대용량 파일에 트래킹을 설정한 후 .gitattributes 파일을 커밋 목록에 추가해 주십시오.
    • 와일드카드(*)를 이용해 복수 파일을 지정할 수도 있습니다.
    • .gitattributes 파일에는 파일에 대한 트래킹 내역이 기록됩니다.
    $ git lfs track "*.psd"
    Tracking "*.psd"
    
    $ git add .gitattributes
    
    Bash
  4. 업로드할 대용량 파일을 커밋한 후 리모트 리포지토리로 업로드(push)해 주십시오.
    $ git add sample.psd
    
    $ git commit -m "Added design file"
    
    $ git push origin master
    
    Bash
참고
  • 대용량 파일을 업로드하는 중 시간 초과(i/o timeout) 오류 등이 발생하는 경우 다음과 같이 대기 시간을 연장할 수 있습니다.
    $ git config lfs.activitytimeout 300
    
    Bash
  • 파일 업로드가 완료된 후에는 SourceCommit 리포지토리의 [Code] 탭에서 트래킹이 설정된 대용량 파일이 LFS 형식으로 저장된 것을 확인할 수 있습니다.

Git LFS의 파일 잠금(lock) 기능을 이용하면 특정 계정을 사용하는 경우에만 잠긴 파일을 수정하거나 업로드할 수 있도록 설정할 수 있습니다.

참고
  • 파일 잠금 기능은 Git LFS 2.0 이후 버전에서만 사용할 수 있습니다.
  • Git 클라이언트가 파일의 잠금 상태를 올바르게 인식하도록 하려면 사용자의 로컬 PC 리포지토리에서 파일 잠금 기능을 설정해 주십시오.

파일 잠금 기능을 설정하는 방법은 다음과 같습니다.

$ git config lfs.{Git URL}/info/lfs.locksverify true
Bash
참고
  • 파일 잠금 기능을 설정한 계정에서만 파일 잠금 기능을 해제할 수 있습니다.

  • 잠금 기능 미설정 시 다른 계정으로 잠긴 파일을 업로드할 때에도 다음 경고 메시지와 함께 업로드가 실행되는 등 파일 잠금 기능이 올바르게 작동하지 않을 수 있습니다.

    $ git push origin master
    
    Locking support detected on remote "origin". Consider enabling it with:
    $ git config lfs.{Git URL}/info/lfs.locksverify true
    Unable to push locked files:
    
    test.txt - psr (refs: master)
    WARNING: The above files would have halted this push.
    
    Bash

파일 잠금을 활성화한 후에는 파일 잠금 기능을 설정한 서브 계정에서만 파일을 업로드하거나 파일의 잠금을 해제할 수 있습니다.

  • '서브 계정 1'에서 잠금 설정

    $ git lfs lock "test.txt"
    Locked test.txt
    
    $git lfs locks
    test.txt {sub_account_name} ID:15
    
    Bash
  • '서브 계정 2'에서 파일 업로드(오류 발생)

    $ git add test.txt
    
    $ git commit -m "Modify file"
    
    $ git push origin master
    Unable to push locked files:
    * test.txt - {sub_account_name} (refs: master)
    ERROR: Cannot update locked files.
    
    Bash
  • '서브 계정 1'에서 잠금 설정 해제(해제 성공)

    $ git lfs unlock test.txt
    Unlocked test.txt
    
    Bash
  • '서브 계정 2'에서 잠금 설정 해제(오류 발생)

    $ git lfs unlock test.txt
    test.txt is locked {Sub Account1}
    
    Bash