티스토리 뷰

계기

전에 commit 하였던 message가 다시 보니 마음에 들지 않아 수정을 해야겠다는 생각을 하였습니다. 가장 최근에 commit을 했다면 git commit --amend 를 통해 수정을 할 수 있었겠지만 가장 최근에 한 것이 아니어서 다른 방법을 통해 수정을 해야만 했습니다.

git rebase -i HEAD~[number]

git rebase -i HEAD~10

git rebase -i HEAD~10 명령어를 입력하면 위 이미지와 같은 창이 나옵니다.

HEAD는 첫 번째를 의미하고 10은 HEAD를 포함하여 시작하여 10번째 commit 항목을 의미합니다. 여기서 2,3,7번째 항목의 commit message를 바꾸기 위하여 pickreword 으로 수정을 하였습니다.

pick -> reword

pick 에서 reword 으로 수정을 마친후 vim 에디터를 사용 중이므로 :wq 를 통해서 저장 후 빠져나옵니다.

빠져나온다면 바로 pickreword 로 바꾼 항목에 해당하는 창이 나옵니다. 수정 후 :wq 를 하여 빠져나오면 차례대로 reword 로 바꾼 항목들에 해당하는 창이 순차적으로 나옵니다. 즉 reword 로 바꾼 항목의 수만큼 창이 연달아 나옵니다.

git push --force origin master

git log --online --decoreate --graph | glog

glog 명령어를 통하여 log를 확인해보니 수정된 항목들이 새로 commit이 되어있는 것을 알 수 있습니다.

git push --force origin master

명령어 실행 후 glog 를 실행해 log를 확인해보니 깔끔하게 수정한대로 정리가 되어 올라가있는 것을 알 수 있습니다.

conclusion

git rebase -i HEAD~[number] 실행 후 pick -> edit 으로 바꾸는 것과 과정을 비교해보니 pick -> reword 로 하는 것은 위 이미지와 같이 pick -> edit 의 과정인 git commit --amendgit rebase --continue 명령어를 실행시킬 필요가 없이 간단하였습니다.

edit의 stop for amending 즉 개정하기 위해 멈추는 것이고, reword의 edit the commit message 즉 커밋 메시지를 편집하는 것의 차이여서 edit을 할 때는 git commit --amendgit rebase --continue 와 같은 과정을 거쳐야 하는 것이고, reword 는 그렇지 않다는 생각을 하였습니다.

댓글