(Git 명령어) 8. git reset, git revert - 작업 되돌리기

Byeongho Jeon·2025년 2월 16일

Git

목록 보기
9/13
  1. 깃에서 작업을 되돌리는 방법에는 크게 두 가지가 있다. 바로 revertreset 이다.

  2. revert 는 특정 버전을 되돌리되(취소하되), 되돌아간 상태에 대한 새로운 버전(커밋)을 만드는 방식이다.
    여기서 중요한 점은 기존의 버전은 삭제되지 않는다는 점이다.
    예를 들어, 지금 상황에서 네 번째 버전이 무언가 잘못되어 네 번째 버전의 변경 사항을 되돌리고(취소하고) 싶다고 가정해 보자.
    네 번째 버전을 revert 하면 아래 그림과 같이 (네 번째 버전의 변경 사항이 취소되면서) 세 번째 버전으로 되돌아간 새로운 다섯 번째 버전이 만들어진다. 그림을 보면 첫 번째 버전부터 네 번째 버전은 삭제되지 않고 그대로 유지됐음을 알 수 있다.

  1. reset 은 되돌아갈 버전의 시점으로 완전하게 되돌아가는 방식이다.
    즉, 되돌아갈 버전 이후의 버전은 삭제되는 방식이다.
    reset 에는 크게 세 종류 soft, mixed, hard 가 있다.
    soft reset 은 작업 디렉터리 내 변경 사항과 스테이지에 추가된 변경 사항은 유지하되, 커밋했다는 사실만 되돌리는 reset 이다.
    mixed reset 은 작업 디렉터리 내 변경 사항은 유지하되, 스테이지와 커밋을 되돌리는 reset 이다.
    hard reset 은 작업 디렉터리 내 변경 사항까지 통째로 되돌리는 reset 이다.
    두 번째 버전까지 만들었다는 가정하에 각각의 reset 을 그림으로 표현하면 아래와 같다.
  1. soft reset 하는 명령어는 git reset --soft <되돌아갈 커밋> 이다. 지금 상황에서 세 번째 커밋으로 soft reset 한다면 a.txt 파일에 D를 추가한 뒤 스테이지로 추가한 순간으로 되돌아간다. 세 번째 커밋으로 soft reset 하는 명령어는 git reset --soft <세 번째 커밋> 이다. git reset --soft HEAD^ 또는 git reset --soft HEAD~1 을 입력해도 된다.
  1. mixed reset 을 위해 다시 네 번째 커밋을 만든다.
  1. mixed reset 하는 명령어는 git reset <되돌아갈 커밋> 또는 git reset --mixed <되돌아갈 커밋> 이다. 즉, 아무 옵션 없이 git reset 명령어를 사용하면 mixed reset 이 된다.
    지금 상황에서 세 번째 커밋으로 mixed reset 한다면 a.txt 파일에 D를 추가한 순간으로 되돌아간다.
    세 번째 커밋으로 mixed reset 하는 명령어는 git reset --mixed <세 번째 커밋> 또는 git reset <세 번째 커밋> 이다. 물론 HEAD를 이용해도 된다.
  1. hard reset 을 위해 다시 네 번째 커밋을 만든다.
  1. hard reset 하는 명령어는 git reset --hard <되돌아갈 커밋> 이다. 지금 상황에서 세 번째 커밋으로 hard reset 한다면 네 번째 커밋을 만들기 위해 파일을 수정하고 스테이지에 추가하고 커밋한 사실 모두가 사라지게 된다.
    세 번째 커밋으로 hard reset 하는 명령어는 git reset --hard <세 번째 커밋> 이다. 물론 HEAD를 이용해도 된다.
  1. revertgit revert <취소할 커밋> 명령어를 사용하면 된다.
    여기서 주의해야 할 점이 있다. git reset 은 뒤에 되돌아갈 커밋을 명시한다. 반면 git revert 는 뒤에 취소할 커밋을 명시한다. 예를 들어, git reset <두 번째 커밋> 은 두 번째 커밋으로 돌아가는 명령어이다. 반면 git revert <두 번째 커밋> 은 두 번째 커밋을 취소한 새로운 커밋을 추가하는 명령어이다.
profile
안녕하세요. 개발자 지망생 전병호입니다!

0개의 댓글