본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 43.7: 커밋 ancestry chain: <rev>^, <rev>~<n>, 등등
$ git reset --hard HEAD^ # 마지막 커밋을 무효화한다
$ git rebase --interactive HEAD~5 # 최근 4개의 커밋을 rebase 한다
접미어 ^ 를 revision 파라미터에 붙이게 되면 해당 커밋 객체의 여러 부모 중 (부모 커밋이 여럿일 경우) 첫번째 부모를 참조하게 된다. ^<n> 를 사용하게 되면 해당 커밋의 여러 부모 중 (부모 커밋이 여럿일 경우) <n>번째 부모를 참조하게 된다 (예: <rev>^ 는 <rev>^1 와 동일한 효과를 가진다).
접미어 ~<n> 를 revision 파라미터에 붙이게 되면 해당 커밋 객체의 <n> 번째 세대의 선조 (n-th generation ancestor) 인 커밋을 가리키게 되며, 이 과정 중 부모가 여럿인 경우가 나타나면 항상 첫번째 부모를 따르게 된다. 이 설명을 따른 예로써, <rev>~3 은 <rev>^^^ 와 동일하다. 각각의 단축 버전으로, <rev>~ 은 <rev>~1 을 나타내며, 또한 이는 <rev>^1 와도 동일할 뿐만 아니라, 더 짧게는 <rev>^ 로도 표현 가능하다.
이 문법들은 git 이 생성 가능하다.
이러한 symbolic 이름을 찾고자 하는 경우, git name-rev
명령을 이용할 수 있다:
$ git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940
아래의 예제에서는 --oneline
이 아닌 --pretty=oneline
을 사용하여야 함을 유의하라.
$ git log --pretty=oneline | git name-rev --stdin --name-only
master Sixth batch of topics for 2.10
master~1 Merge branch 'ls/p4-tmp-refs'
master~2 Merge branch 'js/am-call-theirs-theirs-in-fallback-3way'
[...]
master~14^2 sideband.c: small optimization of strbuf usage
master~16^2 connect: read $GIT_SSH_COMMAND from config file
[...]
master~22^2~1 t7810-grep.sh: fix a whitespace inconsistency
master~22^2~2 t7810-grep.sh: fix duplicated test name
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
반응형
'번역 > Git Notes for Professionals' 카테고리의 다른 글
43.9: 검색식에 부합하는 가장 최근 커밋 찾기: <rev>^{/<text>},:/<text> (0) | 2020.04.13 |
---|---|
43.8: 브랜치와 tag 를 역참조 (de-reference) 하기: <rev>^0, <rev>^{<type>} (0) | 2020.02.25 |
43.6: 추적 중인 (tracked) / upstream 브랜치: <branchname>@{upstream} (0) | 2020.02.19 |
43.5: Reflog 참조자: @{<date>} (0) | 2020.02.19 |
43.4: Reflog 참조자: @{<n>} (0) | 2020.02.18 |