Just Do IT!
[Git] 이미 push한 commit 메세지 수정하기 본문
최종 프로젝트를 진행하면서 issue를 생성해서 이슈 번호를 붙이며 commit을 했었는데, push까지 다 한 뒤에야 issue 번호가 잘못되었다는 사실을 깨달았다. 그래서 이미 push한 커밋 메세지를 수정할 수 있을까 구글링하다가 결국 성공했다.
이슈 번호만 수정해서 제대로 pull request하고 merge까지 할 수 있었다.
이건 미래의 내가 다시 이런 실수를 할 때 볼 수 있도록 하는...ㅋㅋㅋ 기록이다.
1. 수정하고 싶은 commit 선택
git commit --amend
ammed를 이용하면 가장 마지막에 commit한 내용을 수정할 수 있다.
마지막 commit만 수정하는 건 매우 간단하다. 위의 명령어 입력 후 커밋을 수정할 수 있는 창이 뜬다.
그 창을 통해 수정을 완료한 후 esc를 누르고 :wq 를 해주면 된다.
하지만 나처럼 여러 커밋을 수정하고 싶다면 아래 명령어를 사용하면 된다.
git rebase HEAD~[커밋수] -i
이렇게 커밋 수를 지정하면 그 커밋 수 만큼 나온다. 나는 최신 커밋부터 4개 커밋을 지정했다.
2. pick 을 reword 로 변경하고 저장하기
1번의 명령어를 사용하면 원하는 커밋 기록이 나온다. 이 때 커밋 앞에 pick이라고 적혀 있는데, 이를 reword로 변경한다.
키보드에서 i를 누르면 편집이 가능한데, i를 누른 뒤에 수정을 원하는 커밋을 바꾸면 된다.
reword는 내용을 그대로 둔 뒤 커밋 메시지만을 수정하는 명령어이다.
맨 앞을 모두 reword로 수정한 뒤 마찬가지로 esc를 누르고 :wq 를 입력하고 enter하여 내용을 저장한다.
이렇게 되면 commit message를 수정할 수 있게 된다.
아래 캡처 사진이 reword로 바꾼 부분이다.
나는 이슈 번호를 변경하기 위해 4개의 commit을 reword로 바꾸었다.
3. commit message 수정하기
2번 과정에서 enter를 누르면 commit message가 하나씩 뜨면서 수정할 수 있게 된다.
이 캡처본처럼 commit message가 나오게 되며, 이 명령창안에서 자유롭게 commit을 편집할 수 있다.
맨 처음 i 를 눌러서 편집 모드로 바꾸고 편집을 한 뒤에,
esc를 누르고 :wq 를 입력한 뒤에 저장하면 자동으로 다음 커밋 메세지로 넘어간다.
나는 이러한 과정을 반복해 총 4개의 커밋을 수정했다.
4. 수정한 commit message 를 다시 push
git push --force
내가 직접 터미널에 입력한 캡처본이다. 이렇게 명령어를 입력하면 기존에 push된 내용이 수정한 내용을 덮어씌워진다.
이렇게 한 뒤에 repository를 확인해보면 commit message가 수정된 걸 확인할 수 있다.
force 명령어는 강제로 push해주는 명령어인데 github 공식 문서에는 최대한 사용하지 말아야 한다고 한다.
그렇지만 이런 경우에는...ㅎ 어쩔수 없다고 생각해야지. 그래도 커밋할 때 한 번, push 전에 한번씩 체크해야겠다.
위의 명령어가 제대로 작동하지 않으면 아래 명령어를 이용하면 된다.
git push origin [branch] -f
pull request를 준비하면서 다시 issue 번호를 보는데 달라서 순간 너무 멘붕이 왔었다.
commit 되돌리는 건 생각도 못햇는데 시윤님이 알려주셔서 구글링해서 제대로 변경한 뒤에 제대로 바꿀 수 있었다.
정말 다행이지만...이전에 두번세번 확인하는 버릇을 계속 들여야겠다.
커밋 메세지 수정하는 건 깃허브 공식 문서에도 잘 나와있다.
Changing a commit message - GitHub Docs
Rewriting the most recent commit message You can change the most recent commit message using the git commit --amend command. In Git, the text of the commit message is part of the commit. Changing the commit message will change the commit ID--i.e., the SHA1
docs.github.com
'Git & Github' 카테고리의 다른 글
[Git 오류] fatal: It seems that there is already a rebase-merge directory (0) | 2023.02.17 |
---|---|
[Github] 여러 Repository 하나로 합치기 (0) | 2023.01.16 |