Menu
Coddy logo textTech

Git Reset --hard

마지막 업데이트

git reset --hard는 브랜치를 대상 커밋으로 이동시키고, 스테이징 영역과 작업 트리 모두가 그것과 정확히 일치하도록 강제합니다. 그 과정에서 커밋되지 않은 모든 변경 사항이 폐기됩니다. git reset의 형태 중 가장 파괴적이므로, 실행하기 전에 현재 작업이 더 이상 필요하지 않은지 반드시 확인하세요.

실수로 커밋을 리셋했나요? hard reset은 보통 git reflog로 복구할 수 있습니다. 터미널 플레이그라운드에서 안전하게 시도해 보세요 - 브라우저 안의 진짜 셸입니다.

git reset --hard는 HEAD를 되돌리고 그 이후의 모든 것을 버립니다. 스테이징 영역과 워킹 트리도 포함됩니다.

구문

CommandWhat it does
git reset --hard커밋되지 않은 모든 변경 사항을 폐기한다 (HEAD에 머무름)
git reset --hard HEAD~1마지막 커밋과 그 변경 사항을 제거한다
git reset --hard <hash>브랜치를 특정 커밋으로 강제로 되돌린다
git reset --hard origin/main로컬 브랜치를 원격과 정확히 일치시킨다

hard reset 복구하기

리셋으로 폐기한 커밋된 작업은 보통 아직 복구할 수 있습니다.

StepCommandResult
1git reflogHEAD가 있었던 위치를 해시와 함께 나열한다
2git reset --hard <hash>리셋 이전의 커밋으로 되돌아간다

git reset --hard 자주 묻는 질문

git reset --hard는 실제로 무엇을 하나요?
현재 브랜치를 대상 커밋으로 이동시키고, 스테이징 영역과 작업 트리 모두를 그것과 일치하도록 덮어씁니다. 커밋되지 않은 모든 변경 사항은 - 스테이징되었든 아니든 - 폐기됩니다. 변경 사항을 스테이징 상태로 유지하는 --soft와 스테이징 해제 상태로 유지하는 --mixed에 비해, --hard는 변경 사항을 버리는 유일한 모드입니다.
모든 로컬 변경 사항을 어떻게 폐기하나요?
커밋을 지정하지 않고 git reset --hard를 실행하면 작업 트리가 마지막 커밋으로 리셋되어 커밋되지 않은 편집이 지워집니다. reset이 건드리지 않는 추적되지 않은 파일까지 제거하려면 뒤이어 git clean -fd를 실행하세요.
브랜치를 원격과 일치하도록 어떻게 리셋하나요?
git fetch를 실행한 다음 git reset --hard origin/main을 실행하세요 (자신의 브랜치로 바꾸세요). 이렇게 하면 로컬 브랜치가 원격과 정확히 일치하도록 강제되며, 원격에서 갈라진 로컬 커밋과 변경 사항이 폐기됩니다 - 로컬 브랜치가 잘못되어 원격 버전만 원할 때 유용합니다.
git reset --hard를 되돌릴 수 있나요?
커밋된 작업은 보통 가능합니다: git reflog를 실행해 리셋 전에 브랜치가 가리키던 커밋을 찾은 다음 git reset --hard <hash>로 되돌아가세요. 한 번도 커밋되지 않은 변경 사항 (작업 트리에만 있는 것) 은 복구할 수 없으므로 --hard는 신중하게 다루세요.
이것을 온라인에서 연습할 수 있나요?
네. 터미널 플레이그라운드를 열면 브라우저 안의 진짜 셸에서 git reset --hard를 실행할 수 있습니다 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌에서도 리셋과 변경 사항 되돌리기를 단계별로 다룹니다.
Coddy programming languages illustration

Coddy로 Git 배우기

시작하기