본문 바로가기

개발/BACK

[Git] git 푸시(push) 롤백(rollback)하기 강제로 되돌리기

728x90

 

 

 

팀으로 개발을 진행하다보면,

작업 브랜치에서 공통으로 관리하는 브랜치로 푸시를 해야할 때가 있다.

 

하지만 사람인지라 develop 브랜치나 master 브랜치에 잘못 커밋을 할 때가 있다.

커밋을 잘못 했을 경우, revert를 통해 내가 커밋한 데이터를 바로 롤백할 수 있지만 푸시를 잘못한 경우에는 난감해진다.

 

이 포스팅은 해당 경우에서 푸시한 브랜치를 되돌리기 위한 포스팅이다.

 


예를들어, 내가 A라는 브랜치에서 작업을 하고 있다가 master 브랜치에 잘못 푸시한 상황일 때,

명령어를 통해 git 폴더로 접근한다.

 

 

깃에 올라가 있는 프로젝트 내부 폴더로 접근하면, .git이라는 폴더가 있을 거다.

 

 

해당 폴더 내부에서 아래의 명령어를 입력해준다.

 

1
2
3
$ git reset --soft HEAD^
 
$ git reset --hard HEAD^
cs

 

HEAD^ : 지정되어있는 브랜치의 이전 버전으로 

 

soft : 내 로컬 디렉토리에 푸시한 데이터를 남긴다.

 

hard : 내 로컬 디렉토리에도 푸시한 데이터를 남기지 않는다. (완전한 되돌림)

 

해당 명령어를 통해서 origin에 푸시한 내용을 리셋시킨다. 

hard로 리셋시키면 푸시하기 이전 데이터를 가진 브랜치로 되돌아간다.

 

위의 명령어로 데이터를 리셋시켰으면, 리셋시킨 브랜치를 다시 origin에 푸시해줘야 하는 작업을 진행해야한다.

 

강제로 origin에 있는 브랜치 내용을 이전 버전으로 푸시하기 때문에, -force 옵션을 통해 강제 옵션을 부여해주어야 한다.

 

 

아래 명령어를 통해 내 로컬에 있는 브랜치 내용으로 강제 푸시를 진행하면 완료

 

1
2
3
$ git push origin master -f
 
$ git push origin +master
cs

 

728x90