커밋 메세지를 수정하는 2가지 방법을 알아보겠습니다.
--amend
💡 스테이지에서 commit
하고, 아직 push
하지 않은 커밋 메세지를 수정하는 방법
git commit --amend
commit
명령어의 옵션git commit --amend
를 입력해, 최근 커밋의 편집 모드에서 수정 후 저장합니다.
편집된 커밋이 새로운 해시값을 할당 받았습니다.
rebase
💡 로컬에서 push를 완료하고 원격 저장소에 올라간 커밋 메세지를 수정하는 방법
🚨 Git Rebase 공식 문서에서 말하길,
"로컬 브랜치에서 작업할 때는 히스토리를 정리하기 위해서 Rebase 할 수도 있지만, 리모트 등 어딘가에 Push로 내보낸 커밋에 대해서는 절대 Rebase 하지 말아야 한다."
"이 주의사항을 지키지 않으면 사람들에게 욕을 먹을 것이다."
이 글을 보시는 분들은 부디 큰 실수가 아니길 바랍니다.
저의 rebase 트러블슈팅 스토리는 [Git] 같은 commit이 중복 push됐을 때 reset으로 삭제하기에서 확인할 수 있습니다. 😂
git rebase HEAD~n -i
: 부모 커밋을 기준으로 n
번째 커밋까지의 커밋 메세지
git rebase -i 커밋 해시
: 특정 커밋 1개
rebase
는 '재설정' 이라는 뜻으로, 수정, 병합, 재정렬 수행-i
: rebase 명령을 interactive 모드로 실행하며, 메세지를 수정하거나 삭제이번에는 push 완료 후에 원격 저장소의 커밋 메세지를 변경해 보겠습니다.
만약 HEAD~3 을 입력해서 3개의 커밋을 열게되면 이렇게 push한 순서대로 출력됩니다.
pick을 reword로 변경 후 저장하면 바로 아래 이미지처럼 편집창이 열립니다.
git push --force
"수정 완료"가 붙지 않은 수정되지 않은 커밋들의 커밋 시각을 보면 수정된 커밋과 함께 재 병합이 된 것을 볼 수 있습니다.