728x90
로그를 일일히 찾아 입력하는 불편함을 줄여주기 위해 상대 참조 연산자를 통해 접근한다.
~ (틸드)와 ^(캐럿)을 통해 접근할 수 있다.
HEAD(현재 가리키고 있는 로그 위치)로 할수도 있고, 특정 브랜치로 할 수도 있다.
~와 ^의 차이
둘 다 부모로 접근한다는 개념은 같으나 사용하는 곳이 다르다
예를들어
HEAD^와 HEAD~는 둘다 현재 HEAD가 가리키고 있는 로그에서 앞단계(부모)를 이동하는 것이다.
그러나 사용하는 방법에 따라 둘의 차이가 있는데,
- HEAD^2: 어떤 브랜치를 선택할래?
- tree-way merge한 브랜치에서 그 전 브랜치로 이동할 때 사용된다.
- 첫번째 부모는 main이고, 두번째부모는 main에 Merge된 다른 branch이다.
- 그래서 결국 HEAD^는 main브랜치 commit으로, HEAD^2는 두번째 부모인 feature branch commit으로 이동하게 된다
- HEAD^^
- 부모의 부모로 이동
- 즉, HEAD가 가리키고 있는 Log에서 2번 떨어진 곳의 log로 HEAD이동
- HEAD^2와는 전혀 다르다
- ^^는 선형 뒤로가기고,
- ^2는 두개의 병렬 브랜치인 로그에서 둘 중 하나를 선택하는 것이다.
- 하지만 이렇게 선형으로 뒤로 가기위해서 ^^^^^^를 연속해서 사용하기엔 너무 비효율적이다
- 그래서 HEAD~num을 사용한다
- HEAD~2
- 부모의 부모로 이동
- HEAD^^와 똑같다.
- 만약 HEAD~3이라면 HEAD^^^와 같음
- ~ 뒤에 숫자만큼 선형으로 뒤로 이동한다.
반응형
'개발👩💻 > git' 카테고리의 다른 글
git: stashing과 cleaning (0) | 2021.04.17 |
---|---|
git: tracking branch & upstream branch (0) | 2021.04.17 |
git: gitignore 파일 규칙 (0) | 2021.04.17 |
git: rebase 심화 (rebase --onto: branch 부모의 부모에 대한 rebase) (0) | 2021.04.17 |
git: branch와 status관련 명령어 (branch, switch, diff, rm, restore, reset) (0) | 2021.04.17 |