수색…


비고

많은 Git 명령은 인수로 개정 매개 변수를 사용합니다. 명령에 따라 특정 커밋을 나타내거나 커브에서 도달 할 수있는 모든 커밋을 git-log (1) 과 같이 리비전 그래프를 처리하는 명령으로 나타냅니다. 일반적으로 구문 설명에서 <commit> 또는 <rev> 또는 <revision> 으로 표시됩니다.

Git 개정 구문에 대한 참조 문서는 gitrevisions (7) 맨 페이지입니다.

아직이 페이지에서 누락되었습니다.

  • [_] git describe 출력 예 : v1.7.4.2-679-g3bee7fb
  • [_] @ 혼자서 HEAD 의 지름길로
  • @{-<n>} , 예 : @{-1}- @{-1} 의미하는 [_]
  • [_] <branchname>@{push}
  • [_] <rev>^@ , 모든 부모 <rev>

별도의 문서가 필요합니다.

  • [_] 리포지토리와 인덱스의 블롭과 트리를 참조 : <rev>:<path>:<n>:<path> 구문
  • [_] 수정 범위는 A..B , A...B , B ^A , A^1 및 수정 제한 -<n> , --since

객체 이름을 기준으로 수정 버전 지정

$ git show dae86e1950b1277e545cee180551750029cfe735
$ git show dae86e19

SHA-1 객체 이름, 전체 40 바이트 16 진수 문자열 또는 저장소에 고유 한 하위 문자열을 사용하여 개정 (또는 실제로 모든 객체 : 태그, 트리 즉 디렉토리 내용, 블롭 즉 파일 내용)을 지정할 수 있습니다.

기호식 참조 이름 : 분기, 태그, 원격 추적 분기

$ git log master    # specify branch
$ git show v1.0     # specify tag
$ git show HEAD     # specify current branch
$ git show origin   # specify default remote-tracking branch for remote 'origin'

분기 기호 (예 : 'master', 'next', 'maint'), 태그 (예 : 'v1.0', 'v0.6.3-rc2'), remote- 지점 (예 : 'origin', 'origin / master') 및 현재 분기에 대한 'HEAD'와 같은 특수한 참조를 추적합니다.

심볼릭 참조 이름이 모호한 경우 (예 : 'fix'라는 이름의 분기 및 태그가있는 경우) (동일한 이름의 분기 및 태그는 권장되지 않음) 사용할 참조 유형을 지정해야합니다.

$ git show heads/fix      # or 'refs/heads/fix', to specify branch
$ git show tags/fix       # or 'refs/tags/fix', to specify tag

기본 수정본 : HEAD

$ git show         # equivalent to 'git show HEAD'

'HEAD'는 작업 트리에서 변경 내용을 기반으로하는 커밋의 이름을 지정하며 대개 현재 분기의 심볼 이름입니다. 리비전 매개 변수를 사용하는 많은 명령 (전부는 아니지만)은 누락 된 경우 'HEAD'로 기본 설정됩니다.

Reflog 참조 : @ { }

$ git show @{1}            # uses reflog for current branch
$ git show master@{1}      # uses reflog for branch 'master'
$ git show HEAD@{1}        # uses 'HEAD' reflog

ref, 대개 지사 또는 HEAD와 접미사 @ 뒤에 대괄호 쌍 (예 : {1} , {15} )으로 묶인 서수를 붙여 로컬 저장소 에있는 해당 ref의 n 번째 이전 값을 지정 합니다 . 당신과 함께 최근 reflog 항목을 확인할 수 있습니다 git reflog 명령을, 또는 --walk-reflogs / -g 에 옵션 git log .

$ git reflog
08bb350 HEAD@{0}: reset: moving to HEAD^
4ebf58d HEAD@{1}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{2}: pull: Fast-forward
f34be46 HEAD@{3}: checkout: moving from af40944bda352190f05d22b7cb8fe88beb17f3a7 to master
af40944 HEAD@{4}: checkout: moving from master to v2.6.3

$ git reflog gitweb-docs
4ebf58d gitweb-docs@{0}: branch: Created from master

참고 : reflog를 사용하면 ORIG_HEAD ref ( HEAD@{1} 과 거의 동일)를 활용하는 이전 메커니즘을 대체합니다.

Reflog 참조 : @ { }

$ git show master@{yesterday}
$ git show HEAD@{5 minutes ago}   # or HEAD@{5.minutes.ago}

ref 다음에 {yesterday} @ {yesterday} , {1 month 2 weeks 3 days 1 hour 1 second ago} 또는 {1979-02-26 18:30:00} 와 같이 중괄호 쌍으로 묶인 날짜 지정이있는 접미사 @ 가 뒤에 오는 경우 이전 시점 (또는 가장 가까운 시점)에서의 ref의 값. 주어진 시간에 로컬 참조의 상태를 조회합니다. 예를 들어, 지난 주에 지역의 '마스터' 지부에 있었던 내용.

날짜 지정자와 함께 git reflog 를 사용하여 로컬 저장소에서 특정 참조를 수행 한 정확한 시간을 조회 할 수 있습니다.

$ git reflog HEAD@{now}
08bb350 HEAD@{Sat Jul 23 19:48:13 2016 +0200}: reset: moving to HEAD^
4ebf58d HEAD@{Sat Jul 23 19:39:20 2016 +0200}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{Sat Jul 23 19:26:43 2016 +0200}: pull: Fast-forward

추적 / 업스트림 브랜치 : @ {업스트림}

$ git log @{upstream}..       # what was done locally and not yet published, current branch
$ git show master@{upstream}  # show upstream of branch 'master'

branchname (짧은 양식 <branchname>@{u} )에 추가 된 접미사 @{upstream} 은 branchname에 의해 지정된 분기가 위에 빌드되도록 설정된 분기를 참조합니다 ( branch.<name>.remotebranch.<name>.merge branch.<name>.remote branch.<name>.merge 또는 git branch --set-upstream-to=<branch> ). 빠진 branchname은 현재 기본값으로 설정됩니다.

수정 범위 구문과 함께 여러분의 지사가 업스트림보다 먼저 커밋 (아직 업스트림에 있지 않은 로컬 저장소에서 커밋) 및 커밋 된 사항 (로컬 분기에 병합되지 않은 업스트림에서 커밋)을 확인하는 것이 매우 유용합니다. 양자 모두:

$ git log --oneline @{u}..
$ git log --oneline ..@{u}
$ git log --oneline --left-right @{u}...  # same as ...@{u}

조상 사슬을 투입하십시오 : ^, ~ ~

$ git reset --hard HEAD^             # discard last commit
$ git rebase --interactive HEAD~5    # rebase last 4 commits

접미어 ^ 는 개정 매개 변수에 해당 커밋 객체의 첫 번째 부모를 의미합니다. ^<n> 은 <n> 번째 부모를 의미합니다 (예 : <rev>^<rev>^1 과 동일합니다).

접미어 ~<n> 을 개정 매개 변수로 지정하면 명명 된 커밋 객체의 <n> 번째 조상 인 커밋 객체가 첫 번째 부모에만 이어집니다. 예를 들어 <rev>~3<rev>^^^ 와 같습니다. 간단히 말해 <rev>~<rev>~1 의미하며 <rev>^1 또는 <rev>^ 와 동일합니다.

이 구문은 구성 가능합니다.


심볼 이름을 찾으려면 git name-rev 명령을 사용하십시오 :

$ git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940

다음 예제에서는 --pretty=oneline 및 not --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

분기 및 태그를 역 참조 : ^ 0, ^ { }

경우에 따라 명령의 동작은 분기 이름, 태그 이름 또는 임의의 개정판이 제공되는지 여부에 따라 달라집니다. 후자가 필요할 경우 "참조 해제"구문을 사용할 수 있습니다.

접미어 ^ 다음에 중괄호 (예 : v0.99.8^{commit} )로 묶인 객체 유형 이름 ( tag , commit , tree , blob )은 <type> 유형의 객체가 될 때까지 반복적으로 <rev> <type> 개체를 찾을 수 없거나 더 이상 참조 해제 할 수 없습니다. <rev>^0<rev>^{commit} 의 약자입니다.

$ git checkout HEAD^0    # equivalent to 'git checkout --detach' in modern Git

접미사 ^ 다음에 빈 중괄호 쌍 (예 : v0.99.8^{} )을 v0.99.8^{} 비 태그 객체가 발견 될 때까지 재귀 적으로 참조를 v0.99.8^{} 합니다.

비교

$ git show v1.0
$ git cat-file -p v1.0
$ git replace --edit v1.0

$ git show v1.0^{}
$ git cat-file -p v1.0^{}
$ git replace --edit v1.0^{}

가장 젊은 일치 커밋 : ^ {/ }, : /

$ git show HEAD^{/fix nasty bug}   # find starting from HEAD
$ git show ':/fix nasty bug'       # find starting from any branch

콜론 ( ' : ') 다음에 슬래시 ( ' / ') 다음에 텍스트가 오는 커밋 메시지가 지정된 정규 표현식과 일치하는 커밋의 이름을 지정합니다. 이 이름은 막내 매칭이 어떤 심판에서 도달 할 수있는 커밋 반환합니다. 정규식은 커밋 메시지의 모든 부분과 일치 할 수 있습니다. 문자열로 시작하는 메시지를 일치 시키려면 예 :/^foo 사용할 수 있습니다. 특별한 순서 :/! 일치하는 것에 대한 수식어에 예약되고 있습니다. :/!-foo 는 음의 일치를 수행하고, :/!!foo 는 리터럴과 일치합니다! 문자 다음에 foo 옵니다.

접미사 ^ 와 개정 매개 변수 다음에 슬래시가 오는 텍스트가 포함 된 중괄호 쌍 다음에 <rev> 에서 도달 할 수있는 가장 젊음과 일치하는 커밋을 반환하는 아래의 :/<text> 구문과 같습니다. ^ .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow