Git Commit --amend
마지막 업데이트
git commit --amend는 가장 최근 커밋을 새 커밋으로 교체하여, 메시지를 수정하거나 스테이징하는 것을 잊은 파일을 추가할 수 있게 해 줍니다. 두 번째 커밋을 추가하는 것이 아니라 마지막 커밋을 다시 씁니다. 이로 인해 커밋의 해시가 바뀌므로, 아직 push하지 않은 커밋만 amend하세요.
이 명령들을 터미널 플레이그라운드에서 사용해 보세요. 브라우저 안의 실제 셸이며, 설치할 것이 없습니다.
문법
| Command | What it does |
|---|---|
git commit --amend | 마지막 커밋과 그 메시지를 편집합니다 |
git commit --amend -m "new message" | 마지막 커밋의 메시지를 인라인으로 변경합니다 |
git commit --amend --no-edit | 스테이징된 파일을 추가하고 메시지는 그대로 유지합니다 |
흔한 경우
| Goal | Command |
|---|---|
| 마지막 메시지의 오타를 수정하기 | git commit --amend -m "fixed message" |
| 빠뜨린 파일을 마지막 커밋에 추가하기 | git add file 후 git commit --amend --no-edit |
| 이미 push된 커밋을 amend하기 (주의) | amend한 후 git push --force-with-lease |
Git commit --amend 자주 묻는 질문
마지막 커밋 메시지를 어떻게 변경하나요?
인라인으로 교체하려면
git commit --amend -m "new message"를 실행하고, 편집기를 열어 그곳에서 다시 작성하려면 git commit --amend를 실행하세요. 이는 마지막 커밋을 새 메시지로 다시 씁니다. 이미 push한 커밋에는, force push할 준비가 되어 있지 않다면 하지 마세요.빠뜨린 파일을 마지막 커밋에 어떻게 추가하나요?
git add <file>로 파일을 스테이징한 다음 git commit --amend --no-edit를 실행하세요. --no-edit 플래그는 기존 커밋 메시지를 유지하고, 새로 스테이징된 변경 사항만 이전 커밋에 합쳐 넣습니다.git commit --amend는 새 커밋을 생성하나요?
아니요. 커밋을 추가하는 대신 마지막 커밋을 교체합니다. 결과는 하나의 커밋처럼 보이지만, 기술적으로는 이전 것의 자리를 차지하는, 새 해시를 가진 새 커밋입니다. 공유된 히스토리를 amend할 때 force push가 필요한 이유가 바로 이것입니다.
push된 커밋을 amend해도 안전한가요?
주의해야만 합니다. amend는 커밋을 다시 쓰므로, push한 뒤에는
git push --force-with-lease가 필요하며, 이는 이미 원본을 pull한 사람 누구에게나 지장을 줄 수 있습니다. 공유 브랜치에서는 amend 대신 새 커밋이나 git revert를 사용하는 편이 낫습니다.이것을 온라인으로 연습할 수 있나요?
네. 터미널 플레이그라운드를 열면 브라우저 안의 실제 셸에서
git commit --amend를 실행할 수 있으며, 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌에서도 커밋 수정을 단계별로 다룹니다.