상황
오늘 업무를 다 끝내고 작업한 내용을 깃에 업로드하는데... 실수로 대용량 파일이 올라가 버렸다..
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to '내 깃 레파지토리주소'
에러 머세지는 다음과 같이 나왔고, 저 위에 파일 크기가 커서 그렇다는 문구가 있었는데, 콘솔창을 꺼버렸당..
해당 문구로 에러를 찾아보면 대부분 push 권한 문제에 대한 해결방법이 나온다.
근데 나의 경우는 권한 문제가 아닌 파일 크기의 문제였으므로,,
아무 생각없이 대용량 파일을 지우고 다시 push 하니 또 같은 에러가 났다.
아마 대용량 파일을 commit한 기록이 문제를 일으킨 것 같았다.
그래서 StackOverflow에서 해결방법을 찾았다
https://stackoverflow.com/questions/7986139/git-error-when-trying-to-push-pre-receive-hook-declined
해결
가장 최근의 commit 기록을 삭제하는 방법
git reset HEAD^
+ 2개 이상의 최근 commit을 삭제하려면 ~n으로 commit 수를 지정해주면 된다.
git reset --hard HEAD~n
--hard 옵션의 경우 commit 기록과 변경내용을 모두 삭제하는 기능이고,
commit 기록은 지우되, 변경내용은 그대로 두고 싶은 경우는 --soft 옵션을 사용하면 된다.
실제로 commit이 사라졌는지 확인하는 방법은
git log
commit 기록이 많을 경우, 전체를 로드하는데 시간이 걸리므로, 가장 최근의 기록만 보고 종료하고 싶은 경우 'q' 키를 누르면 로그 기능이 중단된다.
깃을 탄탄하게 배웠으면 이렇게 집도 못가고 구글링할 일도 없었겠지