본문 바로가기
이건 알아야지's/오늘 공부

[TIL] Git - reset 과 revert

by 하루디 2023. 6. 23.

 

업무 중 C# 코드를 리팩토링하다가

master branch와 merge 하다가 오류가 발생했다.

git을 되돌리는 방법을 알아보기로 했다. 

 

📌RESET

아예 특정 시간으로 되돌린다. 리셋시켜버려서 되돌아간 이후의 기록은 사라진다.

예를들어 회귀는 했지만 과거를 기억하지 못하는 (현재의)나 가 된다.

git reflog
git reset (--hard) {주소}
  • reflog : reference log, log 기록을 확인한다.
  • reset 뒤에는 HEAD@{} 또는 e535d54a8 등 주소 2종을 적을 수 있다.

reset 단계

→ soft

: 내용을 가진 상태(commit 직전)로 돌아간다. 바로 다시 커밋할 수 있다.

→ hard

: 돌아가려는 이력 이후의 모든 내용을 지워버린다.

→ mixed

: 기본옵션. 변경된 내용은 working directory에 남아있고 인덱스는 초기화 된다.

 

📌REVERT

과거로 되돌아간다는 이력을 남기고 원하는 시점으로 되돌아간다.

과거로 되돌아간 나는 기억도 남아있다.

git reflog
git revert <되돌릴 커밋 주소>

 

 

📌언제 reset을 하고 언제 revert를 하는가?!

  • 협업 프로젝트에서 이전의 커밋으로 돌아가고 싶을땐 revert를 사용하자
  • 혼자서 작업할때 히스토리를 깔끔하게 유지하고 싶다면 reset을 사용하자

 

 

 

References


https://velog.io/@njs04210/Git-reset%EA%B3%BC-revert-%EC%95%8C%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge-%EC%9D%98-%EA%B8%B0%EC%B4%88#_basic_merging

http://www.devpools.kr/2017/01/31/%EA%B0%9C%EB%B0%9C%EB%B0%94%EB%B3%B4%EB%93%A4-1%ED%99%94-git-back-to-the-future/

http://www.devpools.kr/2017/02/05/%EC%B4%88%EB%B3%B4%EC%9A%A9-git-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0-reset-revert/