각종 에러들을 해결 해 보자

github 에러 해결하기 | remote: error: this exceeds GitHub's file size limit of 100.00 MB | 대용량 파일 push

토오오끼 2021. 9. 14. 22:46
728x90
반응형

 

깃허브는.. 정말 쓰면 쓸 수록 모를 녀석이다...

이렇게 잊을만 하면 에러 포스팅을 하게 하다니...

왜 100MB 이상의 파일을 push하지 못하게 해놓은걸까... 나쁜 녀석들...

 

사실 이전부터 깃허브는 100MB 이상인 파일은 업로드하지 못한다는 것을 인지하고 있었으나 내가 오늘 push하려던 파일의 용량(618.76MB)을 미처 확인을 하지 못한 채 바보같이 push 해버렸다...

당연히 에러를 뱉어냈고..

remote: error: File <file path+name> is 618.76 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

 

위와 같은 에러들을 마주했다.

 

 

보통 큰 용량의 파일을 push 할 때는 2가지 방법이 있다. 

1. git -lfs 적용

2. BFG Repo-Cleaner 적용

 

정말 뻔하게도..ㅎ 나는 두 가지 방법 모두 소용이 없었다.

 

우선 1번의 경우는 이미 큰 용량의 파일을 커밋한 이력이 있으면 적용이 되지 않는다고 한다.

나는 이미 커밋 후 push 하던 참에 오류가 난 것이니 당연히 적용이 되지 않았다.

2번의 경우는 시키는 대로 파일 다운 받고 명령어를 실행했지만 (이유를 알 수 없다..) 해결이 안되었다.

 

lfs와 BFG를 적용하는 방법은 아래 내가 참고했던 블로그의 링크에서 볼 수 있다.

https://medium.com/@stargt/github%EC%97%90-100mb-%EC%9D%B4%EC%83%81%EC%9D%98-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%98%AC%EB%A6%AC%EB%8A%94-%EB%B0%A9%EB%B2%95-9d9e6e3b94ef

 

Github에 100MB 이상의 파일을 올리는 방법

문제점

medium.com

 

 

위의 두 방법이 모두 통하지 않으니 이미 push 해 버린 파일들에 대해서

git push를 취소하는 방법을 써보기로 했다.

 

사실 이전에 강제로 push를 진행하면서 레포와 잔디를 날린 이력이 있어

push를 취소하는 방법이 안전할까에 대해서 의문이 들었지만..

나는 큰 용량의 파일을 원격 저장소에 업로드 하지 않아도 되었고, 협업하는 레포가 아니었기 때문에 

레포가 날아가도 괜찮다는 마음가짐으로 시도를 해 보았다.

 

이 명령을 사용하면 자신의 local의 내용을 remote에 강제로 덮어쓰기를 하는 동시에 되돌아간 commit 이후의 모든 commit 정보가 사라지기 때문에 정말 주의해서 신중히 사용해야한다!


특히, 협업 프로젝트에서는 동기화 문제가 발생할 수 있으므로 협업 레포라면 비추천한다.. 다른 방법을 찾아봐야할 듯..

 

먼저,

git push를 취소하기 위해 먼저 가장 최근의 commit을 취소하고 워킹 디렉터리를 되돌려야한다.

$ git reset HEAD^

위의 명령어를 실행시켜 최근 커밋을 취소하고,

 

$ git reflog

git reflog 명령어를 사용하여 브랜치와 HEAD가 가리켰던 커밋 목록을 확인하여 내가 어떤 시점으로 되돌아갈 것인지 확인해야 한다.

 

돌아갈 시점을 확인을 했으면,

$ git reset HEAD@{number}   #원하는 시점으로 되돌아가기
$ git commit -m "commit messages"   #돌아간 시점에서 커밋하기
$ git push origin +master(branch name)   #되돌린 시점을 원격에 강제 push

git reset HEAD@{number} 명령어를 실행시켜 원하는 시점으로 되돌린다.

시점을 되돌렸다면 되돌려진 상태를 커밋한 후 강제로 원격에 push를 해 준다.

 

나는 HEAD@{7}로 돌아가야했는데 실수로 {9}로 돌아갔다 ㅎ

 

이렇게 원하는 시점으로 돌아가면 로컬, 원격 모두 원하는 시점 이전의 상태로 돌아간다. 

이전의 상태로 돌아갔다면 커밋 후 강제 push를 해주면 된다.

 

 

이렇게 git push를 취소하여 큰 용량의 데이터를 push하기 전의 상태로 돌아갔고 

큰 용량의 데이터를 제외하고 올려야 할 파일만 다시 commit, push하여 제대로 원격 저장소에 push 되었다.

 

728x90
반응형