티스토리 뷰

개발기타

git reset 명령어 옵션

이재원님 2018. 11. 2. 00:10

git reset 명령어는 인덱스 취소와 커밋 취소라는 두가지 동작을 한다.

커밋 취소의 경우에는 옵션에 따른 차이점을 숙지하는게 중요하다.

 

인덱스 취소

add 를 통해 인덱스에 추가된 파일을 취소한다. 

# git add a.txt 취소
git reset a.txt 

# 인덱스 파일 전체 취소
git reset

 

커밋 취소

이전 커밋 상태로 돌아간다. 실행모드(mixed, soft, hard)에 따라서 인덱스, 워킹트리까지 취소 시킬 수 있다.

 

--mixed (기본값)

HEAD 를 지정한 커밋 시점으로 복구한다.

모든 인덱스를 취소시키지만 워킹트리는 유지된다.

취소된 커밋/인덱스 내용은 워킹트리에 남아있다.

 

--soft

HEAD 를 지정한 커밋 시점으로 복구한다.

인덱스 및 워킹트리는 유지된다.

취소된 커밋 내용은 인덱스에 남아있다.

 

--hard

HEAD 를 지정한 커밋 시점으로 복구한다.

인덱스 및 워킹트리까지 해당 커밋 상태로 완전히 덮어쓴다.

취소된 커밋/인덱스/워킹트리 내용은 모두 삭제된다.

 

# 각 옵션을 이용하여 바로 이전 커밋 상태로 돌아간다 (옵션을 안주면 mixed 가 기본값)
git reset HEAD~ 
git reset HEAD~ --hard
git reset HEAD~ --soft

# 3번째 전 커밋 상태로 돌아간다
git reset HEAD~3 

# 특정 커밋 상태로 돌아간다
git reset <커밋아이디>

# reset 전 HEAD 상태로 원복한다 (워킹트리, 인덱스는 복구되지 않음)
git reset ORIG_HEAD

# 인덱스와 워킹트리를 깨끗하게 만든다
git reset --hard
댓글