$ git reset --hard HEAD^

이 명령어는 푸쉬를 하지 않은 커밋 1개를 되돌리는 명령어 이다.

HEAD^ = 현재 헤드의 바로 전 헤드

 

다수의 개발자와 협업을 하다보면, 오늘 아침 혹은 소스 커밋 직전에 git pull을 받는다 하더라도, 커밋메세지 작성중. 혹은 게릿의 코드리뷰 점수를 받아 마스터브렌치에 머지되는 시차 사이때문의 로컬깃과 리모트깃의 차이가 발생하게 된다.

 

로컬깃과 리모트깃의 차이가 발생되면 로컬깃->리모트깃 으로 push가 되지 않는다.

그렇다면 내가 수정한 소스가 있는 로컬깃을 리모트깃으로 맞춰야 할 때가 생기게 된다.

 

위에서 설명했듯이, 내가 pull받은 시점 이후에 새로운 commit이 push된 경우와 gerrit에서 코드리뷰를 진행하는 도중에 다른 commit이 치고들어와 먼저 push된 경우를 경험했다.

 

로컬깃을 리모트깃으로 동기화 하기 전에, 본인이 수정한 소스는 깃으로 관리되는 폴더 외에 보관을 해야한다.

위 명령어로 로컬깃의 헤드를 리모트깃과 싱크된 이력이 있는 이전 커밋까지 돌려준다.

이후에 pull받고, 커밋을 다시 하면 된다.

 

다양한 케이스가 있을 수 있기 때문에 상황파악이 우선이다.

728x90
반응형

+ Recent posts