Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 20:20
관리 메뉴

nomad-programmer

[VCS/Git] git reset: 이전 작업 결과를 저장한 상태로 되돌리기 본문

VCS/Git

[VCS/Git] git reset: 이전 작업 결과를 저장한 상태로 되돌리기

scii 2019. 12. 3. 19:39

git reset 명령은 어떤 특정 커밋을 사용하지 않게 되어 다시 되돌릴 때 사용한다.

git revert 명령이 이전 커밋을 남겨두는 명령이었다면 git reset 명령은 이전 커밋을 남기지 않고 새로운 커밋을 남긴다는 차이가 있다.

또한 git reset 명령은 현재 커밋인 HEAD의 위치, 인덱스, 작업하는 저장소 디렉토리 등도 함께 되돌릴지를 선택하기 위한 모드를 지정할 수 있다.

git rest 명령의 모드

모드 의미 HEAD 위치 인덱스 저장소 디렉토리
hard 완전히 되돌림 변경 변경 변경
mixed (기본값) 인덱스의 상태를 되돌림.
모드를 지정하지 않았을 때의 기본값
변경 변경 변경 안 함
soft 커밋만 되돌림 변경 변경 안 함 변경 안 함

 

* 인덱스(Index) 는 실제 커밋 전 변경 내역을 담는 준비 영역이다. git add 명령을 실행했을 때 이 영역으로 이동한다.

* 저장소 디렉토리는 실제 파일이 담겨있는 작업 영역을 의미한다.

 

커밋을 취소하는 데 필요한 옵션 ( git reset 명령의 옵션 )

옵션 설명
^ 혹은 ~ ~ 은 커밋 내역 하나를 의미한다. 표시한 수 만큼 커밋을 되돌린다. 하나면 최종 커밋 내역일 것이고 두 개면 최종 커밋 내역과 바로 전 커밋 내역이 된다.
ORIG_HEAD git rest 명령을 실행했을 때 지운 커밋 내역을 보관한다. 해당 명령을 통해 git reset 명령으로 지운 커밋을 되돌릴 수 있다.

 

예) 최근 커밋의 세 번째 커밋까지, 그리고 커밋만 되돌리기

// 최근 다섯 개의 커밋 내역을 확인
git log -5

// 커밋만 되돌리기 위해 soft 모드 사용
git reset --soft HEAD~~~

git log -3 명령을 실행해보면 가장 최근 커밋이 바뀐 것을 확인할 수 있다.

 

예) 원래 상태대로 되돌리기

git reset --soft ORIG_HEAD

git log -5 명령을 실행해보면 원 상태로 돌아온 것을 확인할 수 있다.

// 파일의 내용까지 변경
git reset --hard HEAD~~~

// 되돌리기
git reset --hard ORIG_HEAD
Comments