[git] 특정 커밋으로 되돌리기 git reset (–soft vs –hard)

less than 1 minute read

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0

특정 커밋으로 되돌리는 법

[git reset] 로컬 파일 변경X

git log

에서 돌아가고 싶은 commit id를 확인한 후 아래 명령어를 입력하면 된다.

git reset {commit id}

이런 경우 로컬 파일은 변화없이 원격 저장소의 파일들이 변경되며, unstaged 상태에 남아있는다 다시

git log 

를 확인했을 때, 입력한 커밋 넘버 이후의 커밋은 사라져있는 것을 확인할 수 있다.

  • 참고: 만약 git reset을 돌아가고 싶다면 git reflog확인 후 git reset --hard HEAD@{}를 사용하면 됨

[git reset –soft] staged 영역에 남기고 싶을 때

마찬가지로 git log에서 되돌아가고 싶은 commit id를 확인한 후

git reset --soft {commit id}

명령어를 입력하면 변경사항을 staged 영역에 남겨준다.

[git reset –hard] 로컬 파일까지 변경하고 싶을 때

돌아간 커밋의 버전으로 로컬 파일까지 덮어쓰게 하고 싶다면 아래 명령어를 사용하면 된다. 이와 같이 --hard 옵션을 추가할 경우 취소가 어렵기 때문에 반드시 주의해서 사용해야한다!! 로컬 파일의 소스 중 keep이 필요한 부분이 있다면 백업하거나 상황에 따라 다른 방법을 사용해보자. commit idgit log에서 확인하자.

git reset --hard {commit id}

head 키워드 사용

가장 최근 커밋을 취소하고 싶다면 터미널에 아래와 같이 입력하면 된다. 즉 하나(1개) 뒤에 있는 커밋으로 돌아간다는 의미이다.

git reset HEAD~1

만약 로컬에서 n번째 전의의 커밋으로 돌아가고 싶다면 아래 명령어를 사용하면 된다.

git reset HEAD~n

Categories:

Updated: