git - Large files detected(오류)

들어가기

springboot 프로젝트를 github에 push 하던 도중 아래와 같은 error를 만났다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
amagr@DESKTOP-EU9BLID MINGW64 ~/Desktop/Project/nao (master)
$ git push origin master
Enumerating objects: 54, done.
Counting objects: 100% (54/54), done.
Delta compression using up to 8 threads
Compressing objects: 100% (30/30), done.
Writing objects: 100% (33/33), 156.51 MiB | 344.00 KiB/s, done.
Total 33 (delta 20), reused 0 (delta 0)
remote: Resolving deltas: 100% (20/20), completed with 16 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 83b0de65c389cb962e5f8d4559f073aa
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File hanumoka-nao.tar is 186.06 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/hanumoka/nao.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/hanumoka/nao.git'

오류 이미지1

위 오류의 문제는 Large files detected, 즉 100매가를 넘어가는 파일은 github에 올릴수가 없다.

깜빡하고 테스트로 생성한 spring docker 이미지(hanumoka-nao.tar)때문에 push를 거절 당한 것이다.

그런데 문제는 저 파일을 제거하고 다시 commit을 한 상태에서도 계속 위 오류가 나는 것이다.
(일반적으로 해당 삭제하고 commit, push하면 되야되는데 뭔가 알수없는 문제가 있었던거 같다.)

그래서 인터넷을 찾아보니 삭제된 파일이 git에 제대로 인식이 안된듯 했다.

아래 명령어를 이용해서 해당 파일의 캐쉬를 삭제 했다.

1
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch hanumoka-nao.tar'

그런데 문제는 위 명령어로 강제로 캐쉬를 날려버리면 git 로컬과 원격 리파지토리의 history가 엉킨다.

따라서 push 를 하려면 pull을 하라고 메세지가 나오며, 정작 git pull을 하면 아래처럼 오류와 함께 pull이 되지 않는다.

오류 이미지2

fatal: refusing to merge unrelated historeis 오류를 인터넷에 찾아보니, 원격저장소와 로컬저장소의 history가 매칭이 안되서 발생하는 오류이다.

문제가 되던 대용량 파일의 캐쉬를 삭제할때 히스토리가 꼬인것 같다.

아래 명령어를 이용해서 문제가 발생한 master브랜치에서 히스토리가 엉킨것을 무시하고 강제로 pull을 받았다.

1
git pull origin master --allow-unrelated-histories

엉킨 히스토리를 무시하고 pull했기 때문에 master 브랜치와 다른 원격저장소의 파일의 충돌이 난다.

충돌을 모두 해결한뒤 commit, push 를 하면 된다.

참고자료

대용량 파일이 없는데도 계속 오류 해결방법
https://stackoverflow.com/questions/21168846/cant-remove-file-from-git-commit

히스토리가 영켜 발생하는 문제 해결방법
https://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories-on-rebase