특정 branch에서 과거에 커밋했던 시점으로
되돌아가고 싶다면 어떻게 해야 할까?
Git에서 HEAD란?
특정 브랜치의 가장 최신 커밋을 가리킨다.
위의 그림을 보면 4개의 브랜치들이 있는데
각 끝 부분(브랜치 이름이 작성되어 있는 곳)이 각 브랜치의 HEAD부분이다.
git switch (브랜치 명)
switch 명령어로 브랜치를 이동할 때 해당 브랜치의 HEAD 부분으로 이동하게 된다.
특정 브랜치 내부에서 과거의 시점으로 이동하기
--
브랜치에서 커밋 내역들이 있을 텐데 이동하고 싶은 시점으로 이동할 수 있다.
reset과 revert와 다르게 현재 상태를 지우고 과거로 가는 것이 아니라
현재 하던 거는 그대로 내버려두고 잠깐 이전의 커밋 시점으로 이동하는 것으로
과거 커밋 시점으로 돌아가서 코드 내용을 바꾸거나 할 수는 없고 확인만 가능하다.
git checkout HEAD^
git checkout HEAD~
git checkout HEAD^^^
git checkout HEAD~~~~
git checkout HEAD~4
^ 또는 ~ 의 개수만큼 이전 커밋으로 이동한다.
(해당 기호 뒤에 숫자를 붙여서 해당 숫자만큼 이전 커밋으로 이동도 가능하다.)
+
git checkout (커밋 해시)
과거 커밋 해시를 이용해서도 이동할 수 있다.
이렇게 과거 커밋의 시점으로 이동하게 되면
해당 커밋 시점에서 따로 브랜치를 만들 수 있다. (가지를 만들 수 있다.)
과정을 코드로 작성하면
1. sub 브랜치로 이동한다.
git switch sub
2. 한 칸 이전 커밋으로 이동한다.
git checkout^
3. 여기서 새로 브랜치를 만들고 내용을 수정 후 커밋을 한다.
git branch newB
git commit -am "commit"
과거로 이동했던 시점을 다시 되돌리기
^ 또는 ~ 를 이용해서 과거 시점으로 이동했을 때 다시 돌아가는 방법은 - 를 사용하면 된다.
git checkout -
이는 Ctrl + z와 같은 느낌으로
한 번 이동할 때 3칸 이동했으면 해당 3칸을 되돌리고 2칸 이동했다면 2칸 되돌린다.
+ HEAD를 이용해서 reset도 가능하다.
원래 reset을 하려면 reset 하려는 위치의 커밋 해시를 가져와야 했다.
하지만 HEAD를 이용하면 원하는 이전 커밋으로 reset이 가능하다.
git reset HEAD(원하는 단계) (옵션)
git reset --hard HEAD^^
참고 및 출처
'Git & GitHub' 카테고리의 다른 글
협업을 위한 Git commit message 작성법 (+ 템플릿 적용하기) (0) | 2024.12.05 |
---|---|
Git의 다양한 옵션 설정하기 (config) (0) | 2024.01.13 |
원격 저장소의 내용을 로컬 저장소에 가져오기 (0) | 2024.01.10 |
로컬 저장소와 GitHub 원격 저장소 연결 및 업로드하기 (0) | 2024.01.10 |
Vi모드에서 자주 사용하는 명령어 (0) | 2024.01.10 |