Cloud/Git

특정 Commit으로 되돌리기

jheaon 2023. 2. 17. 16:16


 

커밋 되돌리기

만약 작업을 하다가, 해당 개발 기능에 문제가 심각하게 생겨서 전에 만들어 둔 커밋을 돌아가야하는 경우가 있다. 예를 들어 bugfix 커밋 부분으로 되돌아가서 처음부터 작업해야 하는 상황에 직면했다고 가정한다. 

 

과정을 정리하면 다음과 같다. 

  1. git log을 통해 커밋 해시값을 찾는다. 
  2. 되돌아 가고 싶은 커밋 해시값을 이용하여 git checkout 해시값으로 해당 커밋으로 되돌아간다. 
  3. 해당 커밋에서 작업을 이어가고 싶다면 git checkout -b "branch_name"을 이용하여 새로운 브랜치를 만들어 작업을 이어나간다.

 

일단 git log 명령어를 통해 되돌아가고 싶은 커밋의 해시를 찾는다. 일반적으로 git log 명령어로 나오는 해시값은 아주 길지만, git log --oneline을 이용하면 짧은 해시값을 제공해 주기 때문에 이를 사용하는 것을 권장한다. 

 

현재 우리는 bugfix 커밋으로 돌아가야 하기 때문에 해당 커밋으로 이동해야 한다 이동하는 명령어는 git checkout 해시값 이다. 해당 명령어를 통해 이동하면 detached HEAD 상태라고 뜨게 된다. 이는 원래 HEAD가 main 브랜치의 최신 커밋을 가리키고 있었으나 chekcout 명령어를 통해 다른 커밋을 가리키도록 변경되었기 때문이다. 

 

우리는 해당 커밋에서 새로운 브랜치를 만들어 작업을 이어나갈것이기 때문에 새로운 브랜치를 생성하고 작업을 진행한다. 

 

  • git log : 커밋 기록을 확인하는 명령어
  • git log --online : 커밋 기록을 한줄로 확인하는 명령어 
  • git checkout "hash_value" : 해당 커밋 해시로 되돌아가는 명령어
  • git chekcout HEAD~1 : 헤드를 기준으로 전 커밋으로 되돌아가는 명령어 (숫자에 따라 달라짐)
  • git checkout - : 전에 있던 브랜치의 최신 커밋으로 되돌아가는 명령어

 

 

변경한 파일을 최신 커밋 기준으로 되돌리기

현재 bugfix.txt 파일을 수정했으나, 최신 커밋으로 다시 되돌리고 싶은 상황이라고 가정한다. 이런 경우 git checkout -- 파일이름 명령어를 사용하면 해당 파일이 최신 커밋 기준으로 되돌아가게 된다.

 

  • git checkout -- 파일이름 : 최신 커밋 기준으로 파일이 되돌아간다. 

'Cloud/Git'의 다른글

  • 현재글 특정 Commit으로 되돌리기

관련글