Github에 100Mb이상 파일 올리는 방법 (오류 해결)
필자의경우 Bitbucket
에서 사용하던 Project를 Github
로 옴기려고 하다보니 이와 같은 에러가 발생 했다. Github의 경우 개당 파일은 100MB
제한이고 있지만 전체 용량 제한은 없다.
Bitbucket은 개당 파일의 제한은 없지만 전체용량이 2GB이상이 안되는 제한사항이 존재 한다.
Github의 경우 50Mb
는 Warning을 표시하며, 100Mb
부터는 Error를 나타낸다.
따라서 이 이상의 파일을 Push하려하면 아래와 같은 에러를 발생 시킨다.
Github Policy
에러
root@ubuntu:~/python_source/AutoTestingModule# git push github --all
Username:
Password:
Counting objects: 40223, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (26581/26581), done.
Writing objects: 100% (40223/40223), 582.06 MiB | 7.94 MiB/s, done.
Total 40223 (delta 12516), reused 40162 (delta 12503)
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: b052327128727acb5dc9e1fed5cdbb8f
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File TestingResult.tar.gz is 111.47 MB; this exceeds GitHub's file size limit of 100.00 MB
root@ubuntu:~/python_source/AutoTestingModule# git log b05232
fatal: ambiguous argument 'b05232': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
위 에러 메시지는 HEAD에는 100MB 이상의 파일은 없다.
즉 최근 commit이나 현재 Directory에는 100MB 이상의 파일이 존재하지 않는다.
하지만 이전 Commit에서라도 100MB이상의 파일이 존재한다면 이러한 에어를 발생 시킨다.
필자의 경우도 TestingResult.tar.gz
의 경우 이전에 만들어 두었던 BackUp 파일 하나가 변경이력에 들어가서 문제가된 것이다.
해결방법
경고 메시지에도 나와 있듯이 몇가지 해주면 쉽게 해결이 가능하다.
1.git-lfs 이용
2. BFG Repo-Cleaner 적용
https://rtyley.github.io/bfg-repo-cleaner/
필자의 경우 그냥 필요없는 파일이라 이전 이력을 뒤져서 제거하는 방법을 선택 했다.
위 공식 사이트에 가서 bfg-x.x.x.jar
파일을 다운받고 아래처럼 실행하자.
실행 결과
root@ubuntu:~/python_source/AutoTestingModule# java -jar bfg-1.12.12.jar --strip-blobs-bigger-than 100M
Using repo : /root/python_source/AutoTestingModule/.git
Scanning packfile for large blobs: 40169
Scanning packfile for large blobs completed in 1,435 ms.
Found 1 blob ids for large blobs - biggest=116880364 smallest=116880364
Total size (unpacked)=116880364
Found 36035 objects to protect
Found 7 commit-pointing refs : HEAD, refs/heads/GUI, refs/heads/MultiRun, ...
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit 034d2b0b (protected by 'HEAD')
Cleaning
--------
Found 52 commits
Cleaning commits: 100% (52/52)
Cleaning commits completed in 406 ms.
Updating 6 Refs
---------------
Ref Before After
--------------------------------------------------
refs/heads/GUI | bfec4c11 | ebffb517
refs/heads/MultiRun | 968de654 | d0fd0d5f
refs/heads/master | 034d2b0b | abe6ecc0
refs/remotes/origin/GUI | bfec4c11 | ebffb517
refs/remotes/origin/MultiRun | 968de654 | d0fd0d5f
refs/remotes/origin/master | 034d2b0b | abe6ecc0
Updating references: 100% (6/6)
...Ref update completed in 262 ms.
Commit Tree-Dirt History
------------------------
Earliest Latest
| |
......................DDDDDDDDmmmmmm.mmmmmmmmmmmmmmm
D = dirty commits (file tree fixed)
m = modified commits (commit message or parents changed)
. = clean commits (no changes to file tree)
Before After
-------------------------------------------
First modified commit | 7a6c355c | c9286236
Last dirty commit | cb054c2b | 25d98799
Deleted files
-------------
Filename Git id
------------------------------------------
TestingResult.tar.gz | 4153149d (111.5 MB)
In total, 37 object ids were changed. Full details are logged here:
/root/python_source/AutoTestingModule.bfg-report/2016-08-09/00-21-29
BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive
Has the BFG saved you time? Support the BFG on BountySource: https://j.mp/fund-bfg
위와 같이 이전 commit
에서 빠르게 해당 파일을 찾아서 제거하고 commit
메시지를 자동으로 바꾼것을 알 수 있다. 정말 편리한 유틸리티인것 같다.
이제 다시 Github repository에 PUSH
를 시도해 보자.
root@ubuntu:~/python_source/AutoTestingModule# git push github --all
Username:
Password:
Counting objects: 40223, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (26589/26589), done.
Writing objects: 100% (40223/40223), 471.01 MiB | 8.80 MiB/s, done.
Total 40223 (delta 12516), reused 40126 (delta 12494)
To https://github.com/leejaymin/QDroid.git
* [new branch] GUI -> GUI
* [new branch] MultiRun -> MultiRun
* [new branch] master -> master
root@ubuntu:~/python_source/AutoTestingModule#
참고문헌
'Computer Science > Git' 카테고리의 다른 글
자동으로 commit 위치 찾아서 Git으로 지운 파일 복원하기 (0) | 2017.01.31 |
---|---|
Git config 설정 (계정설정) (1) | 2016.10.02 |
Github Page로 개인 홈페이지 제작, Private Git 얻기 (2) | 2016.07.03 |
Android Studio Project gitignore 리스트 (0) | 2016.07.02 |
저장소 통채로 복사하기 (bitbucket to github) (0) | 2016.06.29 |