서비스지향개발자 님,
amend 는 아직 로컬에서 푸쉬 하지 않았을 경우만 가능합니다.
위 질문자 분의 경우에는 이미 푸쉬하여 해당 브랜치에 들어가 있는 상황입니다.
사족이지만 amend 의 경우... 커밋 메세지 내용을 수정하는 용도로 사용할 수 있긴 하지만 주 용도는 커밋한 로컬 파일에 오류가 있을 경우에 수정하기 위해 사용하는 명령어지요.
rebase 도 이와 같은 경우는 소용이 없습니다. 이미 해당 브랜치가 모든 커밋을 가지고 있기 때문이죠. 정 커밋을 지워야 한다면 하드리셋을 하고 새 브랜치를 만들어 푸쉬 하는 방법 밖에는 없지만, 이렇게 되면 다른 팀원들이 새 브랜치로 옮겨 가야 한다는 이야기가 됩니다. 커밋 메세지 때문에 굳이 이렇게 까지 할 이유는 없다고 봅니다.
그리고 위에 히스토리를 언급하셨는데, 오픈소스던 내부 개발이건 모두에게 공개된 커밋 메세지를 나중에 바꾼다는건 공유된 기록을 바꾼다는 것이기 때문에 모두를 혼란에 빠트리게 됩니다. 예를 들어 누가 악의적으로 한달전에 커밋된 100 개의 메세지를 몽땅 다 엉터리로 바꿔 버린다면 큰 손실이죠.
깃은 버전 콘트롤로써 널리 이용되지만, 주 목적은 개발자들이 빠르고 간결하게 협업 할 수 있도록 고안된 툴 입니다.
대부분의 깃 환경을 갖춘 회사들이 그렇듯 풀 리퀘스트를 하고 리뷰어를 붙여서 코드 리뷰를 하며 내가 미쳐 찾지 못했던 버그나 혹은 더 나은 코드를 서로 공유하도록 설계 되어 있죠. 이를 통해 개발자들이 자연스럽게 소통 하며 서로 발전 해 나가는 것 입니다.
그리고 이건 리누즈 토발즈가 Modify/edit old commit messages 이라는 메일에 회신한 내용 입니다.
http://www.gelato.unsw.edu.au/archives/git/0702/38650.html