git의 HEAD
아래와 같은 커밋 히스토리가 존재한다고 하자.
각 말풍선이 가리키는 것은 특정 branch의 HEAD이다. 파란색 말풍선이 가리키는 커밋은 main 브랜치의 HEAD이다.
'git switch main' 실행 후 소스트리를 보면, 맨 아래에서 3rd 커밋에 하얀 점이 있는 것을 볼 수 있다. main의 HEAD인 것!
git checkout HEAD(^ 또는 ~)
또는
git checkout (커밋해시)
'^' (또는 '~')의 갯수만큼 이전으로 이동한다. 예를 들어, git checkout HEAD^^^는 이전으로 3만큼 이동, git checkout HEAD~5는 이전으로 5만큼 이동
EX) delta-branch에서 이전으로 1만큼 이동하기
git switch delta-branch
git checkout HEAD^
git checkout -
EX) 나는 'git checkout HEAD(^ 또는 ~)'를 3번하였다. git checkout HEAD^ -> git checkout HEAD^ -> git checkout HEAD^^
'git checkout -'을 실행한 결과,
'git checkout HEAD^^' 하기 이전으로 돌아갔다.
delta-branch로 돌아가려면?
다른 branch에 위치해 있는 것이기 때문에, switch하면 된다. 'git switch delta-branch'
이전 버전으로 돌아가서 새로운 브랜치를 만들고, 커밋을 하나 생성해보자. 예를 들어 아래와 같은 상황을 만들어보자.
우선, git switch beta-branch -> git checkout HEAD^
git branch gamma-branch
git switch gamma-branch
git switch delta-branch
git reset --hard HEAD^^
참고) 기존 방법
git switch delta-branch
git reset --hard (해시커밋)