티스토리 뷰

Tools/Git

[Git] reset

SdardewValley 2022. 6. 7. 21:21
반응형

reset

  reset은 이전 commit으로 되돌아 갈 때 사용한다.

 

 

--soft

git log --oneline

  git log를 간단하게 출력했다. 이를 기준으로 비교할 것이다.

 

git reset --soft HEAD~
실행 결과

  git reset에 soft 옵션을 주면 HEAD 포인터의 위치가 변했고 변경된 HEAD 포인터 다음의 commit이 사라진 것을 확인할 수 있다. 하지만 파일들을 출력해보면 다른 변화가 있지는 않다. 그리고 수정된 파일은 모두 stage에 등록되어 있다.

 

git reset --soft 시 변화

  파일을 수정하고 add하고 commit을 한 3개의 상태가 있을 때 soft 옵션은 add를 하고 난 뒤의 상태로 되돌려 준다. 즉 commit을 하기 직전의 상태로 되돌려준다. add는 이미 실행되었기 때문에 스테이지에 파일들은 모두 등록되어 있다.

  요약하면 soft 옵션은 HEAD의 위치를 변경하고, 파일의 변화가 없고, commit 직전의 상황으로 돌아간다.

 

 

--mixed

  mixed는 아무 옵션을 주지 않았을 때 기본 옵션이다. 

 

git log
git reset --mixed

  git reset --mixed 후 log를 출력하면 soft 옵션과의 차이점은 없다. soft와의 차이는 stage 상태까지 복원된단은 점이다.

 

git reset --mixed 변화

  mixed 옵션을 주면 변경한 내용들은 그대로 남아 있고 add 직전의 상태로 변화한다.

  요약하면 mixed는 변경한 내용들은 남아있지만 스테이지 상태가 unstaged 상태로 되돌아간다.

 

 

--hard

git log --oneline
파일 내용

  hard 옵션으로 reset을 하기 전의 로그와 파일의 내용이다.

 

로그 변화
파일 내용 변화

  로그는 soft와 mixed 옵션을 주었을 때와 결과가 동일하다. 차이점은 soft와 mixed 모두 워킹 디렉토리의 변경한 내용들은 모두 남아 있었지만, hard는 변경 내용들이 모두 사라져 버렸다.

 

hard 옵션을 주었을 때 변화

  hard 옵션을 주면 변경 내용이 완전히 사라진 것을 확인할 수 있다.

 

  reset을 실행했을 때 입력했던 commit이 돌아가고 싶은 commit일 때 hard, mixed, soft 옵션은 위와 같이 되돌아간다.

 

 

--merge

merge 후 로그

  reset은 merge를 하고 나서도 되돌릴수 있다.

 

git reset --merge 후 로그

  git reset 시 --merge 옵션을 준다면 merge 전의 결과도 되돌아 갈 수 있다.

 

 

주의점

  reset을 하면 commit들이 사라진다. 따라서 같이 공유하는 소스 코드는 reset 작업을 하지 않는 것이 좋다.

 

 

참고

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함