우리가 작업을 하다보면 이전 commit으로 되돌아 가고 싶을 때가 있을 것이다. 이에 대해 알아보도록 하자!!
위의 HEAD 는 최종 commit이 진행된 후의 파일을 가리키는 포인터와 같은 것이다. 그렇다면 이 HEAD를 이전 commit 으로 되돌릴 수는 없을까??
위의 commit 단계로 되돌아 가고 싶다고 가정해보자.
위 commit 단어 오른쪽 옆에있는 부분을 모두 복사한 뒤, terminal에 git checkout 복사부분 을 친 후 git log를 치면
위와 같이 HEAD가 이전 commit으로 옮겨간 것을 확인할 수 있다!
더 전 단계로 옮겨보면
HEAD 위치가 바뀌었고
HEAD 가 가리키는 commit 이후에 생성되었던 파일은 삭제되어있는 것을 볼 수 있다.
아직 과거 commit 을 수정하지는 않았고 단지 checkout 만 진행하였다.
git으로 과거로 돌아갈 수 있고, 다시 현재 상태로도 돌아올 수 있다.
terminal에 git checkout main 삭제되었던 파일들도 다시 생성되고 원래 상태로 되돌아가는 것을 볼 수 있다.
그렇다면 현재 HEAD가 가리키고 있는 commit을 아예 삭제하고 이전 commit으로 돌아가고 싶다면??
terminal 에 git reset --hard HEAD^ ( ^를 입력하는 개수에 따라 현재에서 몇 단계 이전으로 돌아갈건지 정해진다.) 를 입력해보면
다음과 같이 HEAD 가 이동해있는 것을 확인할 수 있다. 이 HEAD 이후에 작성했었던 commit 들은 삭제되었다!!
그런데 origin 이 보이지 않는 것을 볼 수 있다. 원격 저장소에는 아직 이 작업이 push 되지 않았으므로 강제로 push를 해주자.
terminal에 git push origin main --force 를 입력해주면 원격 저장소에도 push 된 것을 확인할 수 있을 것이다.
'Git&Github' 카테고리의 다른 글
과거 Commit에서부터 Branch를 만드는 법 (0) | 2022.09.17 |
---|---|
Mixed reset & Soft reset 이란? (0) | 2022.09.15 |
CLI log & Commit & Push 란? (0) | 2022.09.07 |
Origin & Upstream & Issues 란? (0) | 2022.09.05 |
Forking & Cloning 이란? (0) | 2022.09.04 |