안녕하세요!
Git 명령어 정리하기 3번째 시간입니다.
오늘은 상대 참조에 대해서 알아보려고 합니다.
그럼 시작 하겠습니다.
Git에서 이동할 때 커밋의 해시를 사용하는 방법이 있습니다.
해시의 예를 들면fed2da64c0efc5293610bdd892f82a58e8cbc5d8입니다.
하지만 다 입력 할 필요 없이 fed2만 입력해도 되는 겁니다.
그러나 Git의 상대 참조(Relative Ref)를 사용하면 우리가 기억할 만한 지점(브랜치 bugFix라던가 HEAD라던가)에서 출발해서 이동하여 다른 지점에 도달해 훨씬 쉽게 작업을 할 수 있습니다.
상대 커밋은 두가지 방법이 있습니다.
- 한번에 한 커밋 위로 움직이는 ^
- 한번에 여러 커밋 위로 올라가는 ~<num>
이번 시간에는 캐럿(^)에 대해서 알아 보겠습니다.
먼저 캐럿 (^) 연산자 부터 알아보겠습니다.
참조 이름에 하나씩 추가할 때마다, 명시한 커밋의 부모를 찾게 됩니다.
main^는 "main의 부모"(C1)와 같은 의미 입니다.
main^^ 는 "main의 조부모(부모의 부모)"(C0)를 의미합니다
main 위에 있는 부모를 체크아웃 해 봅시다.
git checkout main^
보시다시피 HEAD가 C1을 가리키고 있습니다.
또한 참조인 HEAD도 상대참조를 위해 사용할 수 있습니다. 커밋트리 위쪽으로 움직이기위해 여러번 사용 해 봅시다.
git checkout C3;
git checkout HEAD^;
git checkout HEAD^;
git checkout HEAD^;
차례대로 C3 -> C2 -> C1 -> C0 이렇게 HEAD가 움직여서 최종적으로 C0에 있는 것을 볼 수 있습니다.