rebase를 실제로 머지할 때 사용하는지 궁금했는데 주변 개발자들이 커밋 정리할 때 쓴다고 해서 놀랬다. 충돌날 때만 사용하는 줄 알았는데 다른 용도로 사용하다니. 신기해서 정리해본다.
이미 깃에 test1, test2, test3 커밋을 만들어서 푸쉬했다. 푸쉬까지 했는데 커밋을 잘못한 것 같아서 수정하고 싶다.
test3
test2
test1
other commit
먼저 바꾸기 전 커밋 해시를 복사한다. 여기서는 other commit
의 해시값을 복사한다.
git rebase -i (other commit의 커밋해시)
그럼 입력 창이 뜰 것이다. 여기서 아래 두 커밋의 pick을 squash로 변경해준다.
pick test3
squash test2
squash test1
:wq
로 저장하고 나면 커밋 메시지 창이 뜰 것이다. 마지막으로 커밋 메시지만 수정하면 끝난다.
이제 origin에 반영하기 위해 git push -f
로 강제로 올리자.
이거 말고도 develop, master -> feature로 가져올 때 merge 보다 리베이스가 깔끔해서 사용한다고 한다. 지금까지 그냥 머지했었는데 이게 조금 더 나아보인다. 언젠가 써먹어야지!