git commit --amend
명령어를 입력하면 다음과 같은 화면을 볼 수 있다.
i
를 입력해서 INSERT 모드로 바꾼 후 커밋 메시지를 수정하면 된다.
저장을 할 때는 esc
->:wq
를 입력해주면 된다. 수정하지 않고 종료할 때는 :q
를 입력해주면 된다.
commit 목록
git log
로그에서 지금까지 커밋들을 확인 후 어떤 커밋을 수정할 것인지 확인을 한다. 두번째 커밋을 수정하고 싶다면 아래 명령어를 입력한다.
수정할 commit 선택
git rebase -i HEAD~3
가장 최근 commit 2개를 보여준다. 수정하고 싶은 커밋 옆의 pick을 reword로 바꾼 후(i
를 입력해 수정모드로 변경) esc
->:wq
로 저장해준다. 이러면 수정할 커밋 창이 순서대로 띄워진다. 커밋 메시지를 수정하고 저장을 한다. git log
를 통해 수정이 된 것을 확인할 수 있다.
💡 commit 하지 않은 파일이 있는 경우
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
커밋을 하지 않은 파일이 있는 경우 위와 같은 error가 발생한다. 이 경우는 저장을 해야하는 경우는 commit을 하거나 git stash로 변경사항을 임시저장하면 된다.
git stash
git stash save
위의 명령어 중 하나를 실행하면 새로운 stash가 만들어지고 working directory가 깨끗해진다. 이제 다시 새로운 브랜치를 생성할 수 있고 commit 메시지를 수정할 수 있다.git stash list
//가장 최근의 stash를 가져와서 적용
git stash apply
//stash 이름에 해당하는 stash를 적용
git stash apply [stash 이름]
//가장 최근 stash 제거
git stash drop
//stash 이름에 해당하는 stash 제거
git stash drop [stash 이름]
커밋을 이미 push 해 remote에 올린 상황인 경우는 push하기 전과 동일하게 commit 메시지를 수정한 후 force를 통해 수정된 커밋을 강제로 push 해 주어야한다.
git push -force 브랜치 이름
git push -f origin main
하지만 이런 상황을 최대한 자제해야한다. push된 커밋 로그를 갖고 있던 다른 팀원들이 로그를 수동으로 수정해주어야하는 상황이 발생하기 때문이다. 그렇기 때문에 push를 하기 전에는 신중해야한다.