[Git] 푸시했는데 커밋 메세지에서 오탈자를 발견했다면(feat. Waiting for your editor to close the file...)

·2023년 2월 1일
2

더 나아가기

목록 보기
4/4
post-thumbnail

'작업하는 데 이정도 시간이 걸리겠지?'
계산하고 노트북 앞에 앉으면 항상 뜻밖의 일이 벌어진다.
'하려던 건 못했는데 왜 밖이 깜깜하지... 이미 밤이었지만 ...'

오늘은 이것에 대해 공부해야만 했다.

이미 push한 커밋 메세지를 잘못썼을 때 수정하는 방법

(VSCode + Mac을 사용하고 있습니다.)
+이 글을 작성한 후 새로 알게된 더 간단한 방법을 위에 올려둡니다!

  • 커밋만 하고 푸시하지 않았을 때
    1.git commit --amend 명령어로 가장 최근의 커밋 메세지를 변경한다.
    2.텍스트 편집기에서 커밋 메세지를 편집한 후 저장한다.
  • push한 가장 최근 커밋 메세지 수정하는 법
  1. 위 내용대로 커밋 메세지를 변경한다.
  2. git push --force-with-lease origin BRANCH_NAME 이전 커밋 강제 푸시

아래는 다른 방법입니다. (삽질이 포함되어있습니다)

  1. VSCode 에 git rebase HEAD~{몇 번째 전의 commit을 수정하고 싶은지} -i 입력
    예) 나처럼 바로 직전 커밋 메세지를 잘못 썼다면? git rebase HEAD~1 -i
  2. VSCode에게 "커밋 메세지를 바꿀래!" 하고 알려주자.
    이것만! 수정한다.
    맨 앞의 'pick'을 'reword'로 바꾸기
    -> :wq
  3. 진짜로 커밋 메세지를 수정한다.
    -> :wq
  4. git push --force

해당 커밋으로 이동하여 커밋 메시지를 수정한 후 해당 branch에 merge하는 rebase 방식이다.

하지만
이렇게 바로 됐다면 글도 안 썼겠지... I'm fine... :)
터미널에 git rebase HEAD~1 -i 를 입력했더니 다음과 같은 에러가 떴다.

hint: Waiting for your editor to close the file... code --wait: code: command not found  
error: There was a problem with the editor 'code --wait'.

터미널에서 code라고 치면 바로 들어가지는 기본 에디터를 VScode로 설정해야한다는 뜻 같았다. 터미널에 code를 치면 없는 명령어라고 떴다.
그렇다면 VSCode를 기본 에디터로 설정해보자.

터미널에서 code 명령어로 VSCode 실행하는 방법 (Mac)

  1. VSCode에서 SHIFT+Command+P
  2. Shell Command: Install 'code' command in PATH 설정
  3. VScode 터미널에 git config --global --edit 입력 후 확인해보면
    .gitconfig 파일에 editor = code --wait가 추가되어있다.

후 ... 이제 되겠지?
터미널에 git rebase HEAD~1 -i를 입력했더니 직전 커밋 메세지 창이 떴다!
하지만

hint: Waiting for your editor to close the file...

라는 에러가 여전히 뜨면서 수정이 되지 않았다.

  1. VSCode 터미널에 git config --global --edit 입력
  2. .gitconfig 파일에서 editor = code --wait -n로 수정

이렇게 하면 작업할 수 있는 새 VScode 창이 뜬다.

이제 ... 다시 ... 최종....

  1. 터미널에 git rebase HEAD~1 -i 입력
  2. 새 창으로 열린 편집 화면에서 'pick'을 'reword'로 수정, 저장 후 창 끄기
  3. 새 창으로 열린 COMMIT_EDITMSG에서 커밋 메세지 내용 수정, 저장 후 창 끄기
  4. git push --force

원하는 커밋 메세지로 수정되었다!

이미 push한 커밋 취소하는 방법

하는 김에 푸시하 커밋까지 취소해보자 ~~!
1. git log 삭제할 커밋 확인
2. git reset HEAD^ 가장 최근 커밋을 삭제
3. git push -f origin [브랜치명] GitHub에서도 해당 커밋을 삭제

교훈
오탈자가 없는지 커밋 메세지를 꼼꼼히 확인하자.
실수했더라도 방법은 있다. 오늘도 하나 배운다.

profile
주니어 프론트엔드 웹 개발자 🐛

1개의 댓글

comment-user-thumbnail
2023년 11월 12일

좋은 글 감사합니다

답글 달기