git reset

김영후·2022년 10월 27일
0

Git

목록 보기
1/2
post-thumbnail

git reset의 세 가지 사용법

1. soft reset

git reset --soft <이동할 커밋 체크섬>

위 그림은 git reset --soft 9e5e6a4 을 한 상태이다.

git soft reset을 하게 되면 HEAD branch를 이동시킨다.

특정 시점에서 과거로 갈 수 있다.

그러나 working directory와 staging area에 영향을 주지는 않는다.

2. mixed reset

git reset을 옵션없이 사용할 때 동작

git reset [파일명] 또는 <이동할 커밋 체크섬>

스테이지 영역에 있는 파일들을 스테이지에서 내린다(언스테이징)

워킹 디렉토리의 내용은 그대로 두고 해당 파일을 스테이지에서만 내린다.

이렇게 git add를 통해 스테이징 된 파일을 git status로 확인했다.

git reset을 통해 언스테이징 한다.

그림에서 보듯이 soft reset과 다른 점은 워킹 디렉토리에는 가장 최신의 작업 내용이 있지만

head branch와 index(staging 영역)는 이동되었다는 것이다.

그래서 이렇게 과거의 커밋으로 돌아가거나 스테이징 된 파일을 내릴 때 사용한다.



3. hard reset

git reset --hard <이동할 커밋 체크섬>

현재 브랜치를 지정한 커밋으로 옮긴다. 작업 폴더의 내용도 함께 변경된다.

commit을 하고 git log를 이용해 커밋 체크섬을 확인한다.

git reset --hard 커밋 체크섬

명령어를 통해 특정한 커밋으로 이동한 것을 확인할 수 있다.

ps. git reset --hard HEAD~<숫자> 로도 할 수 있다. <숫자>는 숫자번 째 위쪽 조상을 뜻한다.

git reset --hard는 워킹 디렉토리의 내용까지 되돌리기 때문에 굉장히 주의해서 사용해야 한다.

--hard 옵션을 이용해서 reset했다면 되돌리는 것이 불가능하니 주의해서 사용하자.





파일명으로 reset 하기

지금까지의 경우와 다르게 파일명을 이용해 reset을 하게 되면

git reset file.txt

HEAD branch를 이동시키지 않고 Index(staging area)를 HEAD가 가리키는 상태로 만든다.

이 명령은 해당 파일을 Unstaged 상태로 만든다. git add와 완전히 반대되는 상황.

profile
https://poagg.tistory.com/ 로 이전합니다.

0개의 댓글