[Git] Reset & Revert

이리·2024년 5월 20일
0

git

목록 보기
1/2
post-thumbnail

Git을 쓰면서 커밋을 조금 더 쉽게 할 방법이 없을까 찾아보게된다. Git은 보통 리눅스 기반 쉘에서 TUI, 즉 텍스트 사용자 인터페이스로 조작하기때문에 조금은 어려운 느낌이 있다. 이걸 좀 더 쉽게 하려고 인터페이스(GUI)를 제공하는 SourceTree 같은 도구를 사용해 보았다. sourceTree와 함께 Reset과 Revert에 대해 알아보자


reset 과 revert는 버전을 되돌린다는 측면에서 동일한 작동을 하지만 작동의 방식에 있어서 차이가 존재한다.

우선 파일을 아래와 같이 차례대로 입력한다.

  • 첫번째 커밋 : a.txt : A
  • 두번째 커밋 : b.txt : B
  • 세번째 커밋 : c.txt : C
  • 첫번째 커밋 추가내용 : a.txt => A , 추가내용1
  • 두번째 커밋 추가내용 : a.txt => A , 추가내용1, 추가내용 2


1. revert

revert 는 버전을 이전의 상태로 되돌리지만 새로 바뀐 버전을 새로운 버전으로 만들어 커밋하는 것을 말한다.

여기서 중요한 부분은 '새로운 버전'으로 라는 말이다.

revert를 한 결과 새로운 커밋이 생성되는것을 확인할 수 있다.

!! 여기서 주의할점
revert의 경우 돌아가고자하는 커밋과 현재 커밋간의 충돌이 발생할수 있다

이부분이 굉장히 피곤할것같다..
(보통 한줄에 추가할 부분과 삭제할 부분이 겹치게 될 경우 발생한다.)
참고하자! ⇒ https://youtu.be/FqIL4vZafwU?si=Hl3Yko_fcprbViVR


2. reset

reset의 경우 revert와 다르게 변경 내용을 새로 저장하지 않고 한번에 지워버리기 때문에 충돌이 발생하지 않는다는 점에서 간편한것 같다.

reset에는 3가지 옵션이 있다.

  • soft : 커밋사실만 되돌린다 ⇒ 스테이지와 원본은 남는다.
  • mixed : 스테이지에 올라와 있는 내용도 추가로 삭제한다.
  • hard : 모든것을 삭제한다.

먼저 soft 버전이다.

우선 revert된 저 커밋이 마음에 들지 않으니 한번 지워 보겠다.
soft로 reset을 하게 된다면 스테이지에 올라온 채로 유지될 것이다.

예상햇던대로 스테이지에 변경사항은 add 되어있고 커밋만 삭제된 것을 확인할 수 있다.

이번에는 mixed로 해보자.

soft와 다르게 스테이지에서 내려간 파일을 확인할 수 있다.

마지막으로 hard 버전이다.

모든 내용이 사라졌음을 확인할 수 있었다.. hard는 항상 조심하도록하자..

profile
Bonjour!

0개의 댓글