-
소스트리 깃 commit 이전으로 되돌리기 - 용량 큰 파일 push 오류 날 때 커밋 삭제하는 법데이터 분석/Python 2021. 12. 8. 10:26
깃허브는 100mb 이상의 파일을 올리려면 bitbucket에서 LFS 저장소를 생성하여 업로드하는 방법이 있다
하지만 기존의 깃허브 저장소는 100mb 이상의 큰 용량 파일을 올리게 되면 오류가 난다.
이 때 실수로 커밋 후 git add로 스토리지 영역에 올려두었을 때
푸시(Push) 오류가 나면서 다른 변경된 사항도 푸시(push)하지 못하는 난감한 경우가 있다.
방법은 용량이 큰 파일을 commit하기 이전의 commit 커밋 상태로 되돌리면 된다.
즉 git add를 취소하는 것이다.
이전 커밋으로 변경하기 위해서는 git bash 터미널 창을 열어야 한다.
소스트리 창에서 터미널을 열어도 된다
git bash 창이 열리면 이전의 커밋 기록을 살핀다. n개의 커밋을 돌리는 식으로 명령어를 넣어도 되지만
이전 커밋기록이 많아서 갯수가 헷갈리는 경우 특정 Git code를 지정하여 되돌릴 수 있다.
깃에서 커밋 삭제하는 법
1. git log 입력한다.
$ git log
그러면 이전에 깃에 커밋했던 기록들이 죽 나온다.
만약에 12월 7일 화요일 오후 5시 10분경 "date update" 라고 커밋한
파일 용량이 100mb 이상의 큰 파일이라고 치자.
2. 되돌리고 싶은 git 커밋 코드를 지정한다.
여기서 중요한건 해당 커밋 이전의 상태로 되돌려야 하므로
그 아래 커밋 기록의 코드를 입력해야 한다.
3. git reset --hard 35d3f2388158724bb8f37bb9acf6a6ec3077590a 입력한다.
$ git reset --hard 35d3f2388158724bb8f37bb9acf6a6ec3077590a
--hard 옵션은 현재 HEAD에서 추가된 변경사항들을 모두 되돌려준다.
그러면 오류가 나서 푸시되지 않은 "Push1" 이 사라진다.
만약 스테이지에 올려두고 싶다면 --hard가 아닌 --soft옵션을 사용한다.
$ git reset --soft
코드 입력이 더 번거롭다 하는 경우 위에서 취소하고 싶은 커밋 갯수를 입력하면 된다
$ git reset HEAD~4
위에서 취소하고 싶은 커밋 이전의 커밋 코드를 지정한것과 달리 갯수를 지정할 땐 지우고 싶은 갯수만 지정하면 된다.
지우고 싶은 커밋 포함하여 4개인 것을 확인할 수 있다.
가장 최근의 커밋을 취소하려고 하는 경우 아래 코드를 사용하면 된다.
$ git reset HEAD^
4. git log 와 git status로 현재 상태 점검한다.
이전 기록으로 되돌아간 걸 확인한다면
$ git log --oneline
$ git status
여기서 궁금한 점!
Q. 그러면 그 이후의 커밋 기록은 다 없어지는 건가요?
A. 네 커밋 기록은 없어지지만 변경된 파일 내용은 어디로 도망가지 않습니다. 다른 파일들의 변경사항은 다시 commit 메세지를 생성하면 됩니다.여기서 문제는 용량이 큰 파일이었으므로 이전 커밋 환경으로 돌아가면 스테이지에 올라가지 않은 파일이
소스트리에 뜹니다.
용량이 큰 파일은 따로 보관하거나 필요없는 경우 삭제해주면 됩니다.
나 같은 경우는 회사컴퓨터가 아닌 개인 컴퓨터에서 깃허브에 미리 푸시(push)해둔 변경사항이 있기에 용량이 큰파일을 삭제 후 깃허브에 Push해놓은 변경사항을 회사컴퓨터에서 다시 Pull을 받으니 내가 원하는 상태가 되었다.
만약 커밋을 이미 푸시(push)해 버렸다면?
git reset은 HEAD 위치를 바꿔버려서 로컬 저장소의 상태를 커밋 이전으로 강제 변경해준다.
하지만 커밋을 협업중인 원격 저장소에 push해버린 경우 로컬 저장소에서 커밋을 취소해버리면 원격 저장소와 상태가 달라져 버린다. 이럴 땐 git revert를 사용해주면 된다.
git reset : 커밋 취소
git revert : 커밋 내용 되돌리기
반응형'데이터 분석 > Python' 카테고리의 다른 글