sitelink1 https://git-scm.com/docs/git-reset 
sitelink2  
sitelink3  

git reset은 HEAD의 위치를 현재 커밋에서 과거의 커밋으로 이동시킬 수도 있고 미래의 커밋으로 이동시킬 수도 있는 중요한 커맨드입니다.

 

하지만 많은 분들이 git reset을 사용할 때 겁을 먹곤 합니다. 

리셋이라는 단어가 주는 공포감 때문에 혹시라도 이 커맨드를 실행했다가 작업했던 것이 전부 날아가는 게 아닌가하는 걱정 때문인데요.

 

하지만 git reset이 무슨 일을 하는지 정확하게 이해하고 나면 전혀 걱정할 필요가 없습니다. 

git reset에는 아래와 같은 3가지 옵션이 있는데요.

 

​(1) —soft

(2) —mixed

(3) —hard

 

​이 옵션 간의 차이를 정확히 알아야 git reset을 제대로 사용할 수 있게 됩니다.

다음은 각 옵션별 차이점입니다.

 

(1) —soft 옵션

—soft 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 

대신 현재 작업 중인 working directory와 staging area는 아무런 영향을 받지 않습니다. 

그림으로 표현하면 아래와 같습니다.

image00.png

 

(2) —mixed

—mixed 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 

그리고 staging area도 해당 커밋의 모습과 동일하게 변합니다. 

하지만 현재 작업 중인 working directory는 아무런 영향을 받지 않습니다. 

아래 그림을 보면 이해하실 수 있습니다.

image01.png

 

(3) —hard

—hard 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 

그리고 staging area와 현재 작업 중인 working directory도 해당 커밋의 모습과 동일하게 변합니다. 

아래 그림처럼요.

image02.png

 

 

 

사실 이 옵션은 좀 주의해서 사용해야 합니다. 

만약 현재 working directory에서 어떤 작업을 하다가

아직 커밋을 하지 않았는데 —hard 옵션으로 git reset을 해버리면 이때까지 작업했던 게 다 날아가버리기 때문입니다.

—hard 옵션의 경우에는 주의해서 사용할 필요가 있는 거죠.

번호 제목 글쓴이 날짜 조회 수
39 sourcetree - 특정 커밋으로 프로젝트 변경 황제낙엽 2025.08.26 0
38 git clone시 보안에 취약하지만 사용자 아이디와 비번 저장해놓고 사용하기 황제낙엽 2025.08.05 0
37 cherry pick 내가 원하는 커밋만 가져오기 file 황제낙엽 2022.02.17 371
36 Git Extensions Online Manual 황제낙엽 2022.02.17 4441
35 심플한 커밋 이력 조회 (git log --pretty=format) [2] 황제낙엽 2022.01.12 342
34 Git 특정 폴더 및 파일만 clone 하기 (작성중) 황제낙엽 2021.10.08 347
33 git remote set-url file 황제낙엽 2021.09.03 300
32 git clone [bare/mirror] 정리 file 황제낙엽 2021.09.03 889
31 Git Repository 이동하기 황제낙엽 2021.09.02 305
30 유용한 Git 명령어 몇가지 황제낙엽 2021.09.02 324
29 Git의 4가지 영역 황제낙엽 2021.09.02 346
28 Git bare repository 황제낙엽 2021.09.02 296
» git reset의 3가지 옵션 제대로 이해하기 file 황제낙엽 2021.07.31 328
26 이전 커밋으로 되돌리기 (revert, reset) file 황제낙엽 2021.07.31 431
25 Ubuntu 에 Git 설치 황제낙엽 2020.09.13 365
24 Git commit 이력(Merge pull request #00 from repo/branch) 깔끔하게 관리하기 file 황제낙엽 2016.10.04 381
23 10분만에 파악해보는 What is GitHub (Hello World) file 황제낙엽 2016.10.04 554
22 태그(Tag) 생성 file 황제낙엽 2016.09.29 687
21 git 에서 CRLF 개행 문자 차이로 인한 문제 해결하기 file 황제낙엽 2016.09.29 939
20 [Git] SourceTree 에서 Global 변수 세팅 file 황제낙엽 2016.09.27 381