본문 바로가기
개발 도구 및 Git 사용법/git (협업 툴) 사용법 정리

GIT - Commit한 메세지 문구 수정하기 (Commit 메세지 오타 수정)

by 번데기 개발자 2020. 12. 6.
반응형

GIT을 사용하다 보면 커밋을 메시지에 오타가 들어가거나 커밋 메시지를 바꾸고 싶을 때가 있습니다. 

 

이럴 때 저는 예전에는 git reset HEAD^ 를 사용해서 Commit을 취소하고 메시지 수정 후에 다시 Commit을 했는데 찾아보니 더 간단한 방법이 있는 것 같아서 정리해보려고 합니다.

 

커밋 메시지를 잘못 입력했을 때 보통 어떤 식으로 수정해야 하는지 한번 알아보겠습니다.

 

 

1. 마지막 Commit 메시지 수정하기

마지막 커밋 메세지를 수정하는 것은 비교적 간단합니다. 

 

git에서 제공하는 --ammend 옵션을 통해 간단하게 Commit 메시지를 수정할 수 있습니다.

 

형식은 다음과 같습니다.

 

git commit --amend -m "바꿀 메시지"

 

아래는 실제로 실습해본 내용입니다.

 

마지막 커밋 메세지 실습 1

또는

 

git commit --amend

위에서처럼 --amend까지만 입력 후 vi 터미널에서 메시지 수정후 wq로 저장하시면 됩니다.

 

 

2. 이전에 Commit 메세지 수정하기

마지막 커밋 이전에 작성했던 커밋들의 메시지를 수정하기 위해서는 조금 과정이 더 필요합니다.

 

이를 위해서는 rebase 명령어를 사용하여야 하는데 rebase명령어는 branch의 base를 다시 설정하여 master브랜치와 merge commit생성을 방지하여 깔끔한 커밋을 남길 수 있도록 도와주는 명령어입니다.

 

(현재는 개념만 알아두고 깊게 아실 필요는 없습니다.)

 

일단 터미널에 아래와 같이 입력합니다.

 

git rebase -i HEAD~3 

 

rebase에서 -i 옵션을 주면 rebase명령을  대화형으로 수행하여 여러 커밋들의 순서를 바꾸거나 커밋 히스토리를 변경 또는 삭제할 때 사용합니다. 

 

하지만 저희는 그냥 단순히 커밋 메시지만 변경시킬 목적으로 사용하시면 됩니다.

 

위 코드에서 HEAD~3 은 최근 커밋 메시지중 3개만 불러온다는 뜻입니다. 만약 5개 이전의 커밋 메시지를 수정하고 싶으면 HEAD~5로 바꿔서 입력하는 식으로 사용하면 됩니다.

 

위에서처럼 git rebase -i HEAD~3 명령어를 입력하면 다음과 같이 출력됩니다.

 

rebase 이후 커밋 내역 출력

보시면 

pick | 커밋 번호 | 커밋 메시지

형식으로 출력되는 것을 확인할 수 있습니다.


이때 메시지를 수정하고 싶은 Commit 내역의 pick reword로 바꾸고  와 wq를 눌러서 터미널을 종료해주시면 됩니다.

 

저는 한번 "첫 번째 커밋"을 "첫번째 커밋 수정"이라고 메시지를 한번 바꿔보겠습니다.

 

rebase -i를 이용한 커밋 메시지 수정 1

 

위의 터미널을 종료하면 Commit 메시지에 대한 화면이 아래에서처럼 터미널에서 다시 호출됩니다.

 

rebase -i를 이용한 커밋 메시지 수정 2

 

이때 아래와 같이 메시지를 수정하고 wq로 저장하시면 됩니다.

 

rebase -i를 이용한 커밋 메시지 수정 3

 

 

3. 리모트에 이미 push 했을 때 

commit이 이미 원격에 push 되었다면 커밋 메시지를 수정후 

 

git push --force 브랜치 이름

 

으로 원격에 다시 덮어쓰는 방법이 있습니다.

 

하지만 이는 권장되지 않으며 상황에 따라 무척 위험할 수도 있습니다. 

 

왜냐하면 협업 중에 다른 사람이 강제로 바꿔놓은 branch를 pull 받았을 때, 커밋 메시지가 수정되어있으면 혼란을 야기할 수 있기 때문입니다.

 

또 push 된 Commit의 로그를 갖고 있던 다른 팀원들이 일일이 수동으로 Commit 로그 메시지를 수정해야 할 수도 있다고 합니다. 
(확인해보지는 못하였습니다.)

 

아무튼 항상 push는 신중하게 하는 것이 좋은 것 같습니다.

 

 

 

 

참고)

velog.io/@mayinjanuary/git-%EC%BB%A4%EB%B0%8B-%EB%A9%94%EC%84%B8%EC%A7%80-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0-changing-commit-message

 

 

 

반응형