본문 바로가기

Git

[Git] 옛날 커밋으로 되돌아가기 - reset

 

작업 중 실수가 있어서 이전 이력의 특정 커밋으로 되돌리고 싶다면 해당 커밋을 우클릭 후, '이 커밋으로 초기화' 를 눌러줍니다.

 

 

 

 

 

우리가 보통 하고싶은 깔끔한 리셋은 [Hard] 모드입니다. 지금 작업 공간이 더럽든, 깨끗하든, 그냥 깔끔하게 저 커밋으로 히스토리를 돌리겠다는 말이죠. 반면, [Soft], [Mixed] 모드는 시간을 되돌리긴 하지만 그 이후의 변경사항은 작업공간에 남겨두겠다는 소리입니다. 

저는 [Mixed] 로 해보겠습니다. 

 

 

 

 

 

 

[Soft] 와 [Mixed] 둘다 변경사항을 남겨두지만 

둘의 차이점을 보자면 ..

 

되돌린 커밋시점 이후의 변경이력이 [Soft] 는 스테이지에 올려져 있고, [Mixed] 는 스테이지로부터 내려가 있습니다.

저의 경우 [Mixed] 를 했기 때문에 스테이지에서 전부 내려가져 있습니다.

 

 

 

 

 

 

변경사항을 commit 후 push 하려하면 아래와 같이 충돌이 납니다.

그 이유는 원격브랜치인 [origin/master]에는 아직 변경사항이 그대로 남아있기 때문입니다.

이 변경사항을 원격 브랜치에도 반영하려면 강제 푸시 옵션을 해주어야 합니다.

 

 

 

푸시를 할 때 아래와 같이 강제 푸시에 체크해줍니다.

 

 

 

강제 푸시 옵션이 없는 경우는

Windows의 경우 도구>옵션>Git탭>강제 푸시를 허용 

Mac의 경우 설정>고급>강제 푸시를 허용

체크해주시면 됩니다.

 

 

 

강제 푸시를 하고 나면 되돌리기를 한 시점 이후의 commit 이력은 깔끔하게 사라지고 빨간색 부분의 강제푸시한 커밋 부분이 최종적으로 올라간 걸 볼 수 있습니다.