커밋은 하나의 기능을 만들 때 변경사항을 저장해 주는 것이 좋습니다. 하나의 기능을 만들고 커밋을 할 때 실수로 커밋하지 못한 파일이나 수정된 파일이 있을 수도 있습니다.

이때, 최신 커밋에 누락된 파일을 추가하고 싶을 때에 amend를 사용합니다.

$ git commit --amend

'한 번 더 커밋 하면 되지' 라고 생각할 수도 있습니다만, 같은 기능을 나타내는 커밋이 2개가 생겨 버리게 되므로 커밋을 되돌릴 때 혼동이 올 수 있습니다.

<aside> 💡 commit과 push는 날짜나 code 작성 양에 따라 하는 것이 아니라 기능 구현 단위로 해주시는 것이 좋습니다. (유지보수와 복구 측면에서)

</aside>

commit 한 경우

commit 한 경우

amend 한 경우

amend 한 경우

*-m 옵션을 추가하면 편집기를 열지 않아도 명령줄에서 새 메시지를 전달할 수 있습니다.*

$ git commit --amend -m "an updated commit message"

공용 커밋 개정 금지

이때, 혼자 사용하는 것이 아닌 여러 명이 함께 사용하는 브랜치인 경우는 히스토리가 복잡해질 수 있으므로 조심해야 합니다.

개정된 커밋은 실제로 완전하게 새로운 커밋이며 이전 커밋은 현재 브랜치에 더 이상 존재하지 않습니다. 공용 스냅샷을 다시 설정하는 것과 동일한 결과가 발생합니다.

다른 개발자가 작업 기반으로 삼고 있는 커밋은 개정하지 마세요. 이로 인해 개발자에게 혼란스러운 상황이 발생할 수 있으며, 복구하는 것도 복잡한 일입니다. (병합 충돌도 해결해야 한다.)