Head
- 현재 속한 브랜치의 가장 최신 커밋(브랜치의 가장 끝 부분)
switch
명령어로 branch를 옮기면 각 branch의 head에 위치하게 된다
checkout
- reset/revert 와 다르게 과거의 어떤 commit으로 이동만 하는 명령어
git checkout HEAD [~<m>...][^<n>...]
- ℹ️
^
와 ~
의 차이
- 여러번 사용하는 형태의 경우는 동일한 의미를 가진다
git checkout HEAD~~~
== git checkout HEAD^^^
= 부모의부모의부모커밋
- 뒤에 숫자를 붙이게 되면 의미가 달라진다.
git checkout HEAD~2
: 부모의 부모 커밋
git checkout HEAD^2
: 병합된 커밋에서 부모중 두번째 부모를 가리킨다.
실습
- delta branch로 이동 후
git checkout HEAD~~
명령어를 이용해서 부모의 부모 커밋으로 이동
- HEAD 가 2개 커밋 전으로 이동한 모습 확인
- ℹ️
git checkout -
를 입력하면 cmd+z
와 같이 이전 checkout 했던 커밋으로 이동한다.
git checkout HEAD
명령어를 이용하면 해당 브랜치에서 갈라진 임시 브랜치를 만들어서 이동하게 된다.
- 다시 원래 있던 head의 자리로 돌아가기 위해서는
git switch
를 이용하면 된다.
git checkout 활용
- 과거의 특정 커밋에서 새로운 브랜치를 만드는 경우
- 과거의 특정 브랜치로 이동
git switch -c gamma-branch
를 입력해 새로운 branch 생성
- 파일을 수정하고 commit
![](https://velog.velcdn.com/images/patayokr/post/a6c54fad-ba08-434d-aad3-9bb0acaaba19/image.png)
![](https://velog.velcdn.com/images/patayokr/post/b0535e27-0815-46be-904c-4f8b8caa39be/image.png)
- beta 1st commit 에서 새로운 gamma-branch가 생성된 것을 알 수 있다.
git reset 과 head의 활용
- 커밋의 해쉬값 뿐만 아니라 HEAD를 기준으로 사용해서 reset을 진행할 수 도 있다.
- delta-branch에서
git reset --hard HEAD^^
입력하기