본문 바로가기
개발 도구/Git

git reset 되돌리고 싶을 때 커밋 리스트 확인하기(git reflog)

by ♥︎해이나♥︎ 2022. 12. 10.
반응형

프로젝트를 시작한 후에 이런 저런 작업들을 해서 많은 커밋들이 쌓였다. 작업을 하다가 특정 시점으로 돌아가고 싶어서 git reset 명령어를 실행시켰는데, 그것이 실수였다면... 다시 예전으로 돌아가야 한다면...🫠 그럴 때는 어떻게 해야 할까? 

 

 

먼저 아직까지 한 커밋리스트를 살펴 보았다. git reset 되돌리는 방법을 설명하기 위해 일단 첫번째 커밋인 Create calculator.py and Lisence 으로 돌아가보도록 하겠다. (테스트를 하면서도 되돌리는 걸 실패할까봐 무서운 코린이...😦)

 

 

되돌리고 싶은 첫번째 커밋 아이디를 확인한 후에 git reset --hard 1ec2 라는 명령어를 실행시켰다.

 

 

그리고 다시 커밋 히스토리를 확인해 보았다.

 

 

엌... 다 없어져 버렸어... 일단 reset은 제대로 되었다. 그러면 이제 reset 하기 전, 예전 버전으로 다시 돌아가 보도록 하겠다.

 

cf. 여기서 사용한 git history는 개인적으로 자주 사용하는 명령어인 git log --pretty=oneline을 aliasing한 것이다. 자세히 알고 싶다면 아래 링크를 클릭하면 된다.

2022.10.21 - [개발자 꿈나무/Git] - Git alias(별명) 설정하는 방법 & HEAD의 의미

 

Git alias(별명) 설정하는 방법 & HEAD의 의미

자주 사용하는 깃 커맨드에 단축키(별명)를 설정하여 사용할 수 있다. 이 때의 별명을 alias 라고 하고, 이 별명을 설정하는 것을 aliasing 이라고 한다. git alias 설정하는 방법 Aliasing하는 명령어는

heinafantasy.com

 

돌아가고 싶은 커밋 아이디를 알고 있을 때

reset을 한다고 해서 버전들이 모두 삭제되는 것은 아니다. head가 가리키는 버전이 이동하는 것 뿐이다. 그렇다면 돌아가고 싶은 커밋 아이디만 알고 있다면 되돌리는 방법은 아주 간단하다.

 

 

아까와 동일한 방법으로 reset 명령어를 사용하고 커밋 아이디만 바꾸어 주면 된다. 위와 같이 git reset --hard a833 이라고 명령어를 쓰고 실행시키면 HEAD is now at a833198 revert test 라는 문구와 함께 순식간에 버전이 복구된다.

 

 

하지만 나는 포스팅을 하느라 캡처본이 있었고, 그래서 최신 커밋 아이디를 알고 있었기 때문에 쉽게 되돌릴 수 있었던 것이다. 보통 이것들을 모두 캡처해두거나 적어두는 사람은 거의 없을테니... 돌아가고 싶은 커밋 버전의 아이디를 모르는 경우에는 어떻게 해야할까?

 

돌아가고 싶은 커밋 아이디를 모를 때

당연히 그런 상황에도 사용할 수 있는 명령어가 있다. (깃 짱짱맨👍🏻) 

 

git reflog

 

reflog는 reference log의 줄임말이라고 한다. 이 명령어를 실행하면 아래와 같이 아직까지 HEAD가 가리켰던 커밋 히스토리를 한 눈에 볼 수 있다. 돌아가고 싶은 커밋 아이디를 찾아서 되돌리면 된다.

 

 

확인 후 다시 나갈때는 키보드에서 q를 누른다. 그리고 팁 한가지 더!

git reflog 명령어를 실행하면 커밋 아이디가 아닌 HEAD@{n} 이라고 되어있는 부분도 찾을 수 있는데, 이것을 커밋 아이디 대신 사용해도 된다. 아래와 같이 git reset --hard HEAD@{1} 이라고 입력해도 동일한 결과를 얻을 수 있다.

 

 

다시 나의 작고 소듕한 커밋들이 모두 살아났다. (천만다행...😊)

 


올해 9월에 깃을 제대로 공부해보겠다고 마음먹고 첫 포스팅을 했는데, 벌써 4개월이나 지났다. 이제 강의도 거의 다 끝나가서 올해 안으로 깃 공부는 마칠 수 있을 것 같다. 개인적으로 만들어보고 싶은 프로젝트가 있기 때문에, 이 공부를 마치고 나면 바로 이어서 리액트 강의를 들을 계획이다. 그러면 아마도 이번에 배운 깃을 이용해서 효율적인 버전관리를 할 수 있을 것이다. (훗) 어쩌면 올해 가장 잘한 일이 깃과 친해진 것일지도...? 마지막까지 열심히 공부해야겠다. 나님 화이팅!

반응형

댓글