커밋은 하나의 기능을 만들 때 변경사항을 저장해 주는 것이 좋습니다. 하나의 기능을 만들고 커밋을 할 때 실수로 커밋하지 못한 파일이나 수정된 파일이 있을 수도 있습니다.
이때, 최신 커밋에 누락된 파일을 추가하고 싶을 때에 amend
를 사용합니다.
$ git commit --amend
'한 번 더 커밋 하면 되지' 라고 생각할 수도 있습니다만, 같은 기능을 나타내는 커밋이 2개가 생겨 버리게 되므로 커밋을 되돌릴 때 혼동이 올 수 있습니다.
<aside> 💡 commit과 push는 날짜나 code 작성 양에 따라 하는 것이 아니라 기능 구현 단위로 해주시는 것이 좋습니다. (유지보수와 복구 측면에서)
</aside>
commit 한 경우
amend 한 경우
git add <file>
로 빠트린 파일을 staging 하고, git commit —amend를 입력한다. 가장 최근의 커밋과 방금 입력한 커밋(amend 옵션을 준 커밋)은 하나의 커밋으로 기록된다.*-m
옵션을 추가하면 편집기를 열지 않아도 명령줄에서 새 메시지를 전달할 수 있습니다.*
$ git commit --amend -m "an updated commit message"
이때, 혼자 사용하는 것이 아닌 여러 명이 함께 사용하는 브랜치인 경우는 히스토리가 복잡해질 수 있으므로 조심해야 합니다.
개정된 커밋은 실제로 완전하게 새로운 커밋이며 이전 커밋은 현재 브랜치에 더 이상 존재하지 않습니다. 공용 스냅샷을 다시 설정하는 것과 동일한 결과가 발생합니다.
다른 개발자가 작업 기반으로 삼고 있는 커밋은 개정하지 마세요. 이로 인해 개발자에게 혼란스러운 상황이 발생할 수 있으며, 복구하는 것도 복잡한 일입니다. (병합 충돌도 해결해야 한다.)