기능을 만들고 커밋을 했는데 방금 올린 커밋 내용을 들여다보니 무언가 내용이 빠져있거나 잘못 올린 경우가 있습니다.
그럴 경우에 가장 간단한 방법인 git commit --amend
로 커밋을 수정해주면 됩니다.
이번에는 마지막 커밋을 수정해주는 git commit --amend
에 대해 정리하겠습니다.
git commit --amend란?
브랜치의 최신 커밋을 수정하는 가장 간단한 방법입니다.
브랜치의 최신 커밋을 수정하기 위해 git reset으로 커밋을 지우고 수정된 내용을 다시 커밋해주는 방법도 있지만 git commit --amend
를 이용하면 reset 작업 없이 간단하게 최신 커밋을 수정할 수 있습니다.
그림으로 봐도 간단합니다. git commit --amend
를 사용하면 위의 그림처럼 마지막 커밋이 수정됩니다.(별표)
하지만, 중요한점은 마지막 커밋의 내용만 수정된 것으로 착각할 수도 있지만, 사실은 아예 새로운 커밋을 만들어서 parent를 참조하게 하는 것이므로 커밋의 해쉬코드 또한 다릅니다. 그러므로, 이미 Remote Repository에 push 되어진 상태라면 force push를 통해 푸시를 해주어야 합니다.
즉, 수정전의 커밋을 참조하는 커밋이 있다면, 참조하는 커밋은 amend 후에도 수정 전의 커밋을 따라가게 됩니다.
명령어로 수행하기
git commit --amend
파일을 add 해준 뒤, git commit --amend
를 실행해주면 마지막 커밋 수정을 할 수 있습니다.
git commit --amend -m "commit message"
-m 옵션을 추가하면 커밋 메시지도 수정할 수 있습니다.
GUI 툴로 수행하기
여러 GUI 툴에서도 git commit --amend
를 사용할 수 있게 제공합니다.
SourceTree
SourceTree
에서 --amend 플래그를 추가하여 커밋하고 싶을 경우, File Status에서 Commit Options의 Amend last commit을 체크하고 커밋을 해주면 됩니다.
Git Kraken
GitKraken
에서 --amend 플래그를 추가하여 커밋하고 싶을 경우, Commit Message 옆에있는 Amend에 체크를 하고 커밋을 하면 됩니다.
감사합니다!
References
https://www.atlassian.com/ko/git/tutorials/rewriting-history