🎯 학습 목표
- 작업 중 변경을 취소하는 방법을 안다.
- reset과 revert의 차이를 이해한다.
- stash로 작업을 잠시 치워 둔다.
📖 개념 설명
Git의 가장 큰 장점은 “거의 모든 것을 되돌릴 수 있다”는 점입니다. 다만 상황별로 도구가 다릅니다. 아직 커밋 안 한 변경을 버릴 때, 커밋을 취소할 때, 이미 push한 커밋을 안전하게 무효화할 때가 각각 다릅니다.
💻 실습 — 커밋 전 변경 취소
# 수정한 파일을 마지막 커밋 상태로 되돌림 (변경 폐기, 주의!)
git restore 파일명
# 스테이징만 취소 (변경 내용은 유지)
git restore --staged 파일명
💻 실습 — 커밋 되돌리기
# reset: 이력을 과거로 이동 (push 전 로컬에서만 권장)
git reset --soft HEAD~1 # 커밋만 취소, 변경은 스테이징에 남김
git reset --mixed HEAD~1 # 커밋+스테이징 취소, 변경 내용은 유지(기본값)
git reset --hard HEAD~1 # 커밋+변경 전부 삭제 (복구 어려움, 매우 주의!)
# revert: 해당 커밋을 "취소하는 새 커밋"을 만듦 (이미 push한 경우 안전)
git revert HEAD
💻 실습 — stash (잠시 치워두기)
# 작업 중인데 급히 다른 브랜치로 가야 할 때
git stash # 현재 변경을 임시 보관하고 작업 폴더를 깨끗이
git switch main # 다른 일 처리
git switch - # 돌아와서
git stash pop # 치워둔 변경 복원
⚠️ 주의사항
reset --hard는 변경을 완전히 지웁니다. 실행 전 꼭 한 번 더 확인하세요.- 이미 원격에 push한 커밋은
reset으로 지우지 말고revert를 쓰세요. 안 그러면 협업자 이력이 꼬입니다.
💡 팁
- 실수로 reset –hard 했어도
git reflog에 최근 위치가 남아 복구할 수 있는 경우가 많습니다. - stash에 여러 개를 쌓을 수 있습니다:
git stash list,git stash apply stash@{1}.