작업 중 실수가 있어서 이전 이력의 특정 커밋으로 되돌리고 싶다면 해당 커밋을 우클릭 후, '이 커밋으로 초기화' 를 눌러줍니다.
우리가 보통 하고싶은 깔끔한 리셋은 [Hard] 모드입니다. 지금 작업 공간이 더럽든, 깨끗하든, 그냥 깔끔하게 저 커밋으로 히스토리를 돌리겠다는 말이죠. 반면, [Soft], [Mixed] 모드는 시간을 되돌리긴 하지만 그 이후의 변경사항은 작업공간에 남겨두겠다는 소리입니다.
저는 [Mixed] 로 해보겠습니다.
[Soft] 와 [Mixed] 둘다 변경사항을 남겨두지만
둘의 차이점을 보자면 ..
되돌린 커밋시점 이후의 변경이력이 [Soft] 는 스테이지에 올려져 있고, [Mixed] 는 스테이지로부터 내려가 있습니다.
저의 경우 [Mixed] 를 했기 때문에 스테이지에서 전부 내려가져 있습니다.
변경사항을 commit 후 push 하려하면 아래와 같이 충돌이 납니다.
그 이유는 원격브랜치인 [origin/master]에는 아직 변경사항이 그대로 남아있기 때문입니다.
이 변경사항을 원격 브랜치에도 반영하려면 강제 푸시 옵션을 해주어야 합니다.
푸시를 할 때 아래와 같이 강제 푸시에 체크해줍니다.
강제 푸시 옵션이 없는 경우는
Windows의 경우 도구>옵션>Git탭>강제 푸시를 허용
Mac의 경우 설정>고급>강제 푸시를 허용
체크해주시면 됩니다.
강제 푸시를 하고 나면 되돌리기를 한 시점 이후의 commit 이력은 깔끔하게 사라지고 빨간색 부분의 강제푸시한 커밋 부분이 최종적으로 올라간 걸 볼 수 있습니다.
'Git' 카테고리의 다른 글
[Git] IntelliJ 와 git 연결하기 & .gitignore 파일 만들기 (0) | 2021.02.13 |
---|---|
[Git] Eclipse와 Git 연동하기 (0) | 2021.01.26 |
[Git] 이클립스에서 target 폴더 ignored 하기 (커밋시 제외시키기) (0) | 2020.05.19 |
[Git] Fork한 github소스 최신 버전으로 유지하기 (0) | 2020.01.28 |
Git : Authentication failed 에러 처리 (0) | 2020.01.15 |