'작업하는 데 이정도 시간이 걸리겠지?'
계산하고 노트북 앞에 앉으면 항상 뜻밖의 일이 벌어진다.
'하려던 건 못했는데 왜 밖이 깜깜하지... 이미 밤이었지만 ...'
오늘은 이것에 대해 공부해야만 했다.
(VSCode + Mac을 사용하고 있습니다.)
+이 글을 작성한 후 새로 알게된 더 간단한 방법을 위에 올려둡니다!
- 커밋만 하고 푸시하지 않았을 때
1.git commit --amend
명령어로 가장 최근의 커밋 메세지를 변경한다.
2.텍스트 편집기에서 커밋 메세지를 편집한 후 저장한다.- push한 가장 최근 커밋 메세지 수정하는 법
- 위 내용대로 커밋 메세지를 변경한다.
git push --force-with-lease origin BRANCH_NAME
이전 커밋 강제 푸시
아래는 다른 방법입니다. (삽질이 포함되어있습니다)
- VSCode 에
git rebase HEAD~{몇 번째 전의 commit을 수정하고 싶은지} -i
입력
예) 나처럼 바로 직전 커밋 메세지를 잘못 썼다면?git rebase HEAD~1 -i
- VSCode에게 "커밋 메세지를 바꿀래!" 하고 알려주자.
이것만! 수정한다.
맨 앞의 'pick'을 'reword'로 바꾸기
-> :wq- 진짜로 커밋 메세지를 수정한다.
-> :wqgit 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를 기본 에디터로 설정해보자.
- VSCode에서
SHIFT
+Command
+P
Shell Command: Install 'code' command in PATH
설정- VScode 터미널에
git config --global --edit
입력 후 확인해보면
.gitconfig
파일에editor = code --wait
가 추가되어있다.
후 ... 이제 되겠지?
터미널에 git rebase HEAD~1 -i
를 입력했더니 직전 커밋 메세지 창이 떴다!
하지만
hint: Waiting for your editor to close the file...
라는 에러가 여전히 뜨면서 수정이 되지 않았다.
- VSCode 터미널에
git config --global --edit
입력.gitconfig
파일에서editor = code --wait -n
로 수정
이렇게 하면 작업할 수 있는 새 VScode 창이 뜬다.
이제 ... 다시 ... 최종....
- 터미널에
git rebase HEAD~1 -i
입력- 새 창으로 열린 편집 화면에서 'pick'을 'reword'로 수정, 저장 후 창 끄기
- 새 창으로 열린
COMMIT_EDITMSG
에서 커밋 메세지 내용 수정, 저장 후 창 끄기git push --force
원하는 커밋 메세지로 수정되었다!
하는 김에 푸시하 커밋까지 취소해보자 ~~!
1. git log
삭제할 커밋 확인
2. git reset HEAD^
가장 최근 커밋을 삭제
3. git push -f origin [브랜치명]
GitHub에서도 해당 커밋을 삭제
교훈
오탈자가 없는지 커밋 메세지를 꼼꼼히 확인하자.
실수했더라도 방법은 있다. 오늘도 하나 배운다.
좋은 글 감사합니다