Git: 마지막 커밋 되돌리기
마지막 업데이트
가장 최근 커밋을 되돌리려면 그 변경 사항을 어떻게 할지 결정하세요. git reset --soft HEAD~1로 스테이지된 상태로 유지하거나, 단순한 git reset HEAD~1로 스테이지되지 않은 상태로 유지하거나, git reset --hard HEAD~1로 버립니다. 커밋이 조금만 잘못됐다면 git commit --amend가 그 자리에서 수정합니다. 이미 push했다면 히스토리를 다시 쓰는 대신 git revert를 사용하세요. 오래된 커밋이나 여러 커밋을 한 번에 되돌리려면 git 커밋 취소 페이지를 참조하세요.
터미널 플레이그라운드에서 이것들을 시도해 보세요 - 브라우저 안의 진짜 셸이며, 설치할 것이 없습니다.
변경 사항을 어떻게 할지 선택하기
| Goal | Command |
|---|---|
| 커밋 되돌리기, 변경 사항 스테이지된 상태로 유지 | git reset --soft HEAD~1 |
| 커밋 되돌리기, 변경 사항 스테이지되지 않은 상태로 유지 | git reset HEAD~1 |
| 커밋 되돌리기, 변경 사항 버리기 | git reset --hard HEAD~1 |
| 마지막 커밋 수정하기 (메시지 또는 파일) | git commit --amend |
| 이미 push한 커밋 되돌리기 | git revert HEAD |
실습 예제
마지막 커밋을 되돌린 뒤 더 나은 메시지로 다시 커밋합니다.
| Step | Command | Result |
|---|---|---|
| 1 | git reset --soft HEAD~1 | 커밋 제거됨, 변경 사항은 스테이지된 상태로 유지 |
| 2 | git commit -m "clearer message" | 같은 변경 사항을 다시 커밋 |
Git 마지막 커밋 되돌리기 FAQ
변경 사항은 유지하면서 마지막 커밋을 되돌리려면?
git reset --soft HEAD~1을 실행하세요. 이것은 마지막 커밋을 제거하지만 그 변경 사항을 스테이지된 상태로 남겨두므로 바로 다시 커밋할 수 있습니다. 대신 변경 사항이 작업 트리에서 스테이지되지 않은 상태로 있게 하려면 git reset HEAD~1(기본 모드)을 사용하세요.마지막 커밋을 되돌리고 변경 사항도 삭제하려면?
git reset --hard HEAD~1을 실행하세요. 이것은 커밋을 제거하고 그 변경 사항을 작업 트리에서 버립니다. 파괴적인 작업입니다 - 작업이 필요할 수도 있다면 대신 --soft를 사용하거나, 나중에 git reflog로 복구하세요.커밋 메시지만 수정하면 되는 경우는?
git commit --amend를 사용하세요. 마지막 커밋을 다시 열어서 별도의 커밋을 만들지 않고 메시지를 편집(필요하면 파일 재스테이징도)할 수 있습니다. 이미 push한 커밋을 amend하는 것은 히스토리를 다시 쓰므로 피하세요.push한 뒤에 마지막 커밋을 되돌리려면?
git revert HEAD를 사용하세요. revert는 마지막 커밋을 되돌리는 새 커밋을 만들어 히스토리를 그대로 유지합니다 - 공유 브랜치에 안전한 선택입니다. push된 커밋을 reset하면 다른 모든 사람이 다시 쓰인 브랜치를 조정해야 합니다.이것을 온라인으로 연습할 수 있나요?
네. 터미널 플레이그라운드를 열면 브라우저 안의 진짜 셸에서 이 명령들을 실행할 수 있습니다 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강의도 변경 사항 되돌리기를 단계별로 다룹니다.