상대 참조란?
Git에서 상대 참조는 특정 기준점(HEAD, 브랜치, 태그, 커밋 해시 등)을 기준으로 부모나 조상 커밋을 탐색하는 방법입니다.
이 기능은 커밋 히스토리를 유연하게 탐색하고, 특정 시점의 상태를 참조하는데 유용합니다.
예를 들어 로그를 보고 커밋 해시값을 외우고 접근하는 과정은 귀찮습니다. 이런 경우 상대 참조를 통해 커밋을 탐색할 수 있습니다.
^
(caret), ~
(tilde)에 대해서 설명합니다.
^ (caret)
부모 커밋을 참조합니다.
HEAD^
는 HEAD의 부모 커밋을 참조합니다.
HEAD는 현재 커밋을 가리키는 포인터입니다.
여러 단계 위의 부모 커밋을 참조하기
^
를 여러 개 붙이는 것도 가능합니다.
붙이는 개수만큼 위의 부모 커밋을 참조합니다.
~ (tilde)
~n
은 n번째 부모 커밋을 참조합니다.
HEAD~2
는 HEAD의 2번째 부모 커밋을 참조합니다.
^와 ~ 혼합 사용
^
와 ~
을 함께 사용할 수 있습니다.
HEAD~2^
는 HEAD의 두 번째 조상(HEAD~2)으로 이동한 뒤, 그 커밋의 부모를 참조합니다.
다른 예시
다른 기준점(예: HEAD, 브랜치 이름, 태그, 커밋 해시)에도 사용 가능합니다.
다른 repository의 commit을 cherry-pick 하는 방법 포스트도 참고해주세요
예제에서는 git checkout
만 사용했지만, git show
, git log
, git diff
등
다양한 명령어에서도 상대 참조를 사용할 수 있습니다.