간단하게 reset 에서 다시 되돌리는 방법을 설명하고자한다
예를들어 premium 브랜치에서 LayoutStudy README.md 여기 커밋으로 reset을 해보겠다.
git reset --hard bc92
실행하면 워킹 디렉토리에 있는 내용도 다 초기화 될 것이다.
히스토리를 열어보면 맨 처음 파일 업로드 커밋을 제외한 README파일을 첫 커밋 했을때 내용만 들어가있다.
즉 리셋이 잘 실행 되었다는 것을 알 수있다.
그럼 이때까지 작업했던 커밋들은 다 삭제가 돼버린걸까?
그렇지는 않다.
리셋을 해도 리셋한 커밋 이후의 커밋들이 삭제 되는 것은 아니다.
삭제 된것이 아니라는걸 보여주자면
맨 위 사진에 보면 리셋 하기전 히스토리인데 ' 1caf ' 맨 위 커밋을 다시 리셋을 해보겠다
git reset --hard 1caf
쨔잔 다시 돌아온것을 볼 수있다.
이렇게 리셋을 해도 커밋들이 삭제되는 것이 아니다.
이전에 HEAD 관련해서 배웠었지만 단지 HEAD가 가리키던 브랜치가 새로운 커밋을 가리키게 될 뿐이다.
하지만 이렇게 최신 커밋을 돌아올 수 있었던 이유가 사진으로 남겨져있기 때문에 가능했지만
그렇지 않은경우에 리셋을 했다면 어떤 방법으로 다시 돌아올수있을까?
다시 맨 처음 커밋으로 돌아가보자
git reset --hard bc92
이러면 다시 돌아기기위해 최신 커밋을 알기위해 사용하는 커맨드가 존재한다.
Gir reflog
reflog는 reference log의 줄임말이며 HEAD가 이때까지 가리켜왔던 커밋들을 기록한 정보이다.
실행해보면 이런 식으로 HEAD가 가리켜온 커밋들을 보여준다.
여기서 각 한 줄은 HEAD가 가리키던 커밋이 바뀌었을때 기록된 거라고 볼 수있다.
터미널에 나와있는 HEAD@{1}: reset: moving to 1caf 문구는 이 동작을 통해서 HEAD가 가리키게 된 커밋이다.
그리고 맨 앞에 나와있는 7개의 영숫자들이 커밋 아이디이다. 이것을 통해 최신 커밋으로 돌아갈 수있다.
가장 맨위에 나와있는 origin/브랜치가 최신 커밋으로 1caf를 써도 되고 HEAD@{1}을 써도 실행된다.
정리
git reset을 사용한다고 reset한 커밋이 후의 커밋들이 삭제되는 것은 아니다.
그래서 언제든지 더 나중의 커밋으로 돌아갈 수있고 이 떄 커밋 아이디를 확인하기위해 reflog 커맨드를 사용한다.
그럼 헤드가 가리켰던 커밋들을 볼 수있고 그중 원하는 커밋으로 다시 reset 하면 된다.
'Git' 카테고리의 다른 글
(24) Git - stash / 깃 작업 내용 임시 저장하기 (0) | 2024.09.11 |
---|---|
(24) Git - log all과 graph / 커밋 히스토리 보는 여러가지 방법 (0) | 2024.09.11 |
(실무_4) Git Part2 - git revert / 리모트 레포지토리에 올라간 커밋 취소하기 (0) | 2024.09.11 |
(실무_3) Git Part2 - git blame / 코드 작성자 찾기 (0) | 2024.09.10 |
(실무_2) Git Part2 - git pull 와 git fetch (0) | 2024.09.10 |