Git HEAD^ 대 Git HEAD~ 대 Git HEAD{@}
이 기사에서는 Git 캐럿과 Git 물결표의 차이점에 대해 설명합니다. Git 캐럿은 ^
로 표시되고 물결표는 ~
로 표시됩니다.
HEAD{@}
도 논의할 예정입니다. 시작하자.
Git HEAD^
(캐럿)
Git HEAD
에 캐럿을 도입할 때 커밋의 첫 번째 부모를 가리킵니다. 따라서 git HEAD^2
는 커밋의 두 번째 부모를 가리킵니다.
커밋의 부모는 무엇입니까?
커밋의 부모는 하나 이상의 브랜치를 다른 브랜치와 병합할 때 작동합니다. 예를 들어 보겠습니다.
우리 저장소에는 녹색의 Master
분기와 노란색의 Other-Branch
분기가 있습니다.
other-branch
의 커밋 E
는 master
분기의 A
커밋과 병합됩니다. 따라서 A
커밋에는 두 개의 상위 커밋이 있다고 말할 수 있습니다.
따라서 상위 커밋은 단순히 커밋의 이전 커밋입니다.
아래 명령어를 보세요.
$ git show HEAD^ --oneline
위 명령을 실행하면 A
커밋에 있는 경우 B
커밋에서 HEAD
가 이동합니다.
$ git show HEAD^2 --oneline
반면에 위의 명령은 HEAD
를 이동하여 E
를 커밋합니다.
HEAD^
와 HEAD^1
은 같은 용도로 사용됩니다.
위의 설명은 병합된 분기가 있는 경우에만 적용된다는 점에 유의할 가치가 있습니다. 한 분기로 작업하는 경우 HEAD^
는 HEAD~
와 동일합니다.
Git HEAD~
(물결표)
HEAD
에 물결표를 추가하면 분기에서 마지막 커밋의 이전 커밋을 가리킵니다. 직선으로 돌아가는 것과 같습니다.
예를 들어 보겠습니다.
따라서 HEAD
가 커밋 A
에 있으면 git HEAD~
또는 git HEAD~1
은 B
커밋으로 이동합니다. HEAD~2
는 C
를 커밋하도록 우리를 이동합니다.
other-branch
의 E
커밋에서 체크아웃하면 HEAD~1
은 F
등을 커밋하도록 이동합니다.
Git HEAD{@}
이 조합은 로컬 저장소의 특정 시간에 참조 위치를 가리킵니다. 일반적으로 아래와 같이 git reflog
명령을 실행할 때 팝업됩니다.
간단히 말해서 캐럿은 다른 분기의 분기를 병합할 때 유용하며 다른 분기의 커밋으로 전환해야 합니다. 물결표를 사용하면 특정 분기에서 마지막 커밋의 이전 커밋으로 이동할 수 있습니다.
단일 브랜치에서 작업할 때 HEAD^
는 HEAD~
와 동일합니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn