마지막에 푸쉬한 커밋을 되돌리는 것은 쉽다. Github Desktop에서 우클릭후 Amend Commit...
을 클릭하면 된다.
하지만 개인 프로젝트 중 간혹 가다 커밋 메시지가 마음에 안들거나 실수로 통일된 커밋 가이드에 벗어난 메시지가 거슬릴 수 있을 것이다. 그럴땐 터미널에서 몇개의 간단한 명령어로 수정이 가능하다.
git rebase HEAD~1 -i
여기서 잠깐 rebase가 무엇인지 설명을 해보면, merge와 같은 병합방식 중 하나이다. merge는 기존 커밋기록이 남아있는 반면 rebase는 기존에 있던 것은 사라지고 새로 수정한 커밋만 남는다.
i
키를 눌러 편집모드로 바꾼 뒤 수정할 커밋 앞에있는 'pick'을 'reword'로 변경예) 10월 8일의 커밋 메시지를 수정하려면,
pick 10월 10일 커밋 pick 10월 9일 커밋 reword 10월 8일 커밋 ...
그 다음,
esc
로 편집모드를 빠져나온 뒤:wq
키를 입력 하면 수정해야할 커밋 목록이 터미널에 주루룩 뜰 것이다.10월 8일 커밋 # #을 맨앞에 쓰면 무시됨~~ # ~~~~... ...
여기서 다시 i
키를 눌러 편집모드로 바꾼 후 메시지를 수정. (맨 첫 문자에 '#'을 입력하면 그 수정이 무시가 되기 때문에 주의) 만약 연결해야하는 Issue가 있다면 메시지 뒤에 쓰기!
예)
10월 8일 커밋 수정본 (#1) # #을 맨앞에 쓰면 무시됨~~ # ~~~~ ...
다시 esc
키를 누르고 :wq
입력하여 수정사항 저장을 하면 수정된 커밋 메시지와 함께
Successfully rebased and updated refs/heads/main.
라는 문구가 뜬다.
git push --force
를 입력하여 강제로 푸쉬.
메시지 입력 시 특수문자 샵(#)을 넣으면 그 메시지가 무시가 된다. 이번에 Issue와 연결하기 위해 #1 design: work on login ui 이런식으로 작성했더니 메시지가 자꾸 바뀌질 않아서 애를 먹었다😓
기존 커밋을 수정하면 커밋 id가 바뀐다.
강제로 푸쉬하는 것(git push --force)는 협업 시 같은 레파지토리를 공유하고 있는 사람들에게는 자동으로 수정사항이 반영되지 않을 수 있기 때문에 주의해야 한다. push 할때에는 항상 신중히!