Git
[다음 단계로] 3: 상대 참조 #2 (~)
개발하고싶은개발자
2023. 10. 28. 17:16
틸드(~) 연산자
만약 캐럿(^) 연산자를 사용해서 main 브랜치의 5단계 위의 부모를 참조하고 싶다면 main^^^^^ 이렇게 해야 한다. 만약 5개라면 괜찮지만 100개라면? 500개라면? 하나씩 ^을 붙여주기엔 너무 힘들다.
이럴 경우에 틸드(~) 연산자를 사용할 수 있는데, 틸드(~) 연산자는 올라가고 싶은 부모의 개수를 뒤에 붙여주면 된다.
또한 git은 branch 명령어에 -f 옵션을 이용해서 HEAD 뿐만이 아니라 브랜치도 특정 커밋으로 옮길 수 있다. 이때 상대 참조를 사용할 수 있으므로 틸드(~) 연산자를 사용해 보자.
브랜치의 위치를 특정 커밋으로 옮기기
$git branch -f main HEAD~3
위의 명령어를 사용하면 main 브랜치의 위치를 HEAD의 3개 부모 전인 커밋 위(HEAD는 현재 bugFix위에 있으므로 C4이다. 따라서 3개 부모 전은 C1이다)로 옮긴다.
목표
HEAD, main, bugFix를 특정 위치로 옮기기(최소 한 번은 직접 참조(커밋 해시를 사용)를 한다)
$git checkout main~2
$git branch -f bugFix HEAD^
$git branch -f main C6