# git commit --amend
그리고 SVN과 git를 같이 사용하는 경우에 git에 여러 개의 변경사항을 커밋하고 나중에 한꺼번에 SVN에 적용을 하는 경우가 자주 생긴다. 이때 git에서 예전에 커밋했던 메시지에 티켓번호가 기재되지 않아서 SVN 커밋이 거부되는 경우가 발생하는데, 이때는 위에서 설명한 방법만으로는 커밋 메시지를 수정할 수 없다.
만약 맨 마지막 커밋이 아니라 그 전에 커밋된 메시지를 변경해야 하는 경우는 아래와 같이 한다.
1. 먼저 맨 마지막 커밋에서부터 몇번째까지 거슬러 올라갈지 결정해서 아래와 같이 rebase를 실행한다. 이 예에서는 3번째 커밋까지 거슬러 올라가는 것이다.
$ git rebase -i HEAD~3
2. 아래와 같이 최근 3개의 커밋 메시지가 에디터에 표시되는데 이중에 변경을 원하는 메시지들을 골라서 pick라고 되어있는 부분을 edit로 바꿔주고 저장한다. 아래 예에서는 두번째 커밋메시지를 수정하겠다는 뜻이다.
3. 이제 2번 과정에서 edit로 지정한 개수만큼 아래 과정을 반복해서 수행한다.pick dd56df4 첫번째 커밋메시지 어쩌고 저쩌고..
edit 36c7dba 두번째 커밋메시지 어쩌고 저쩌고..
pick 7482e0d 세번째 커밋메시지 어쩌고 저쩌고..
# Rebase b429ad8..7482e0d onto b429ad8
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
3-1. 먼저 아래 명령을 사용해서 커밋 메시지를 수정한다. 에디터에서 메시지를 수정하고 저장하면 된다.
$ git commit --amend
3-2. 다음 커밋 메시지를 수정하거나, 이번이 마지막이라면 수정 작업을 종료한다.
$ git rebase --continue
이제 로그를 확인해보면 커밋 메시지가 변경된것을 확인할 수 있다.
만약 위 과정을 진행하는 도중에 취소를 하고 싶다면 아래와 같이 한다.
$ git rebase --abort
<References>
http://jointheconversation.org/history.html

comments
comments rss (+댓글 쓰러가기)