Data Navigator

github에 실수로 100mb 이상 파일을 push 후 reset, revert 해도 push 안되는 문제 해결법 본문

git_github

github에 실수로 100mb 이상 파일을 push 후 reset, revert 해도 push 안되는 문제 해결법

코딩하고분석하는돌스 2024. 4. 1. 22:59

github에 실수로 100mb 이상 파일을 push 후 

reset, revert 해도 push 안되는 문제 해결법

 

 

 

1. 문제 상황

작업을 하다가 보면 가끔 github에 100mb 이상되는 파일을 포함시켜 commit 하고 원격저장소에 push했다가 용량문제로 push가 되지 않고 오류가 날 때가 있다.

github에 강제로 push해보지만 용량 초과로 push 실패

 

이 상황에서는 git reset . 을 해도 로컬 저장소의 object 디렉토리에 이미 파일이 올라가 있어서 아무리 예전으로 되돌려도 push 할때 다시 원격저장소에 push가 자동으로 된다는 점이다.

심지어 원본 디렉토리에서 대용량 파일을 완전히 삭제후 다시 git add -> git commit 을 해도 push 단계에서 다시 나온다.

 

2. 해결책: git filter-branch 명령어를 통해 수동 삭제

위의 문제를 해결하는 방법은 git filter-branch를 이용해 문제가 되는 대용량 파일을 삭제하는 것이다.

아래의 명령어를 이용해 삭제하면 되고 <file>로 된 부분에 문제가 되는 파일명을 적어주면 된다.

작은 따옴표 있는 부분에 주의하자.

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file>' --prune-empty

 

위의 문제를 해결하는 코드를 적어보면 아래와 같다.

 

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch 타베로그top20전체가게페이지목록20230410.pkl' --prune-empty

 

그러면 위와 같이 파일을 찾아 삭제한다.

 

삭제해야 할 파일이 2개 이상이면 한 번 실행 후 두번째 실행시에는 명령어 마지막에 -f 옵션으로 강제실행 해주어야 한다.

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file>' --prune-empty -f

 

문제가 되는 파일 삭제후 다시 git add, git commit, git push -u origin main --force 순서로 실행하면 정상적으로 원격저장소에 push된다.