git 대용량 파일 올리기

git 대용량 파일 올리기

원인

  1. 하나의 파일 용량이 100mb 이상일 때는 push가 되지 않는다
  2. 커밋 이력 중에 100mb 이상인 파일이 올라간 이력이 있으면 올라가지 않는다

자율 프로젝트의 경우 frontend/android/java_pid22576.hprof 이 파일 업로드 로그가 문제인 것으로 보임

용량 400mb 넘었던 그 파일 - 이게 sdk 버전이 안 맞아서 생기는 메모리 누수 경고? 그런 문제였던 거 같은데 해당 부분은 더 찾아봐야할 듯

process

  1. error 확인

    1
    $ git push origin master
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Enumerating objects: 3218, done.
    Counting objects: 100% (3218/3218), done.
    Delta compression using up to 12 threads
    Compressing objects: 100% (1199/1199), done.
    Writing objects: 100% (3218/3218), 159.51 MiB | 1.90 MiB/s, done.
    Total 3218 (delta 1705), reused 3215 (delta 1703), pack-reused 0
    remote: Resolving deltas: 100% (1705/1705), done.
    remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
    remote: error: Trace: 09bb81948ab6fa06b710474f8fca70c1224fb799c7f56f1878e10774c88307d6
    remote: error: See http://git.io/iEPt8g for more information.
    remote: error: File frontend/android/java_pid22576.hprof is 434.09 MB; this exceeds GitHub's file size limit of 100.00 MB
    To https://github.com/qsoo/test.git
    ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'https://github.com/qsoo/test.git'
  2. bfg-repo 들어가서 우측의 jar 파일 다운로드

    • 해당 다운로드한 파일을 git push할 지점으로 이동시킨다

      1
      2
      3
      4
      5
      6
      7
      example)
      .git/
      backend/
      client/
      frontend/
      bfg-1.14.0.jar
      README.md
  3. 대용량 파일 삭제 및 로그 기록 삭제

    1
    2
    3
    4
    5
    6
    $ java -jar bfg.jar --strip-blobs-bigger-than 100M

    # bfg.jar 자리에 해당 다운로드 받은 버전에 맞는 파일명 써넣기

    # example
    $ java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M
  4. 삭제된 로그 및 파일들의 이력을 바탕으로 가지치기 실시

    1
    2
    # 3번 명령어가 끝나면 친절하게 run 뒤에 명령어 안내해줍니다
    $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
  5. 대용량 파일 없는지 확인

    1
    2
    # 100mb 이상 파일 확인
    $ find . -type f -size +100M
  6. 정상적으로 작동했으면 push commit 새로 해서 실시(mirror도 동일)