Git

Git - HEAD 개념 및 실습

jaycheol 2023. 7. 21. 11:27
반응형

HEAD 개념 및 실습

 

 

Git의 HEAD

현재 속한 브랜치의 가장 최신 커밋

  • switch로 브랜치 이동해보기
    • main과 delta-branch

main과 delta-branch는 엄연히 다른 branch이다. main의 head와 delta-branch의 head는 다른 시점에 위치하고있다. 

checkout으로 앞뒤 이동해보기

git checkout HEAD^
  • ^ 또는 ~: 갯수만큼 이전으로 이동
    • git checkout HEAD^^^, git checkout HEAD~5

현재 우리는 delta-branch에 위치해있다고 가정하고 HEAD의 바로 전 단계로 이동하고 싶은 경우 위의 명령어를 사용해 이동한다. ^또는 ~ 갯수만큼 이전으로 이동하기때문에 시점을 잘 확인한 뒤에 ^또는~의 갯수를 맞춰주면 된다. 

 

해당 명령어를 실행한다면 위의 그림처럼 흰색 동그라미(현재 위치하고 있는 지점)이 달라진 것을 확인이 가능하다. 

git checkout -
  • ⭐️ 커밋 해시를 사용해서도 이동 가능
    • git checkout (커밋해시)
  • git checkout - : (이동을) 한 단계 되돌리기

checkout - 를 사용하는 경우 Ctrl + Z의 기능이다.

HEAD를 통해 몇번째를 이동하였든 이동 후에 checkout-를 실행한다면 전에 HEAD명령어를 실행하기 전 단계로 이동한다.

 

이렇게 checkout을 통해 방금 실행하였던 checkout HEAD의 전 시점으로 복구가 가능하다.

근데 여기서 HEAD를 옮기다보니 cli에서 특이한 점이 발견된다.

 

 

아래의 사진은 git checkout HEAD^^ 를 통해 버전을 이동한 상태이다. 빨간색 테투리에는 원래 branch 명이 노출되어 나오는데 새로운 내용이 노출되어 나온다.

 

자세히 살펴보면 HEAD를 통해 이동한 버전의 해당 커밋 해시와 동일하다. 

또한 git branch를 통해 확인해본다면 새로운branch가 노출되어 나온다. 

 

즉 우리는 checkout 명령어들을 통해 다른 브랜치로 이동되었다는 것이다.

 

  • checkout으로 이전으로 돌아간 뒤
    • 기존 브랜치로 돌아오기: git switch (브랜치명)
    • 새 브랜치 만들어보기
    • 새 커밋 만들어보기

git switch (브랜치명)

해당 명령어를 통해 다시 기존의 branch로 돌아온다.

 

일정 시점으로 돌아가서 새로운 branch생성도 가능하다.

우선 beta-branch로 이동을 하였고 HEAD~를 통해 한단계 뒤로 이동해주었다. 그러면 위와같이 익명의 branch가 생성 되어진다. 그럼 여기서 분기를 해보자. 

 

git switch -c (브랜치명)

gamma-branch를 새로 생성하고 파일을 수정하고 저장하고 커밋까지 완료해보자.

이와같이 beta에서 gamma branch가 한줄 생성되어졌다. 

 

 

HEAD를 사용하여 reset하기

git reset HEAD(원하는 단계) (옵션)

reset에도 적용이 가능하다는 점 알아두자.

반응형