핵심 요약
이미 push해 공유된 커밋을 되돌릴 땐 revert(되돌리는 새 커밋 추가, 안전), 아직 안 올린 로컬 커밋 정리는 reset, 작업 파일 변경 취소는 restore다. "공유됐나 / 무엇을 되돌리나"로 고르면 헷갈리지 않는다.
1. 상황별
| 하고 싶은 것 | 명령 |
|---|---|
| 공유된 커밋 무효화 | git revert <hash> |
| 로컬 커밋 취소(변경 유지) | git reset --soft HEAD~1 |
| 로컬 커밋+변경 폐기 | git reset --hard HEAD~1 |
| 파일 수정 되돌리기 | git restore <file> |
| 스테이징 해제 | git restore --staged <file> |
2. 안전 장치
- 실수로 reset --hard 했어도
git reflog로 대부분 복구 가능 - 되돌리기 전
git stash로 현재 작업 백업
3. 함정
- 공유 브랜치에 reset --hard + force push는 동료 작업 유실 — revert를 써라
reset --hard는 추적 안 된 변경을 날린다(주의)- checkout은 역할이 많아 헷갈림 — 신버전은 restore/switch로 분리됨
자주 묻는 질문
reset과 revert 차이가 뭔가요?
reset은 히스토리를 과거로 되감아(공유 시 위험), revert는 변경을 취소하는 새 커밋을 추가(히스토리 보존, 안전)합니다. 이미 push했으면 revert를 쓰세요.
reset --hard로 날린 작업을 복구할 수 있나요?
커밋된 적이 있으면 git reflog에서 해당 시점 해시를 찾아 복구할 수 있습니다. 다만 커밋 안 된 변경은 복구가 어렵습니다.

댓글 0