캐럿 (^) 문자는 무엇을 의미합니까?


125

여기에서 git에서 삭제 된 파일을 복원하는 데 도움 이되는 질문에 대한 답변을 보았습니다 .

해결책은

git checkout <deleting_commit>^ -- <deleted_file_path>

캐럿 문자 ( ^)는 무엇을합니까? 나는 다른 곳에서 git에서 매우 유용한 일을하는 것을 보았습니다. 그것은 마법입니다. 누군가 나를 위해 그것을 망치고 그것이 무엇을하는지 말해주세요.


9
Windows에서 참고 : ^는 DOS 셸에서 예상대로 작동하지 않습니다. git bash 쉘을 사용하면 작동합니다.
Cincinnati Joe

5
그것은 내가 그것을 사용하려고 시도했을 때도 발생하지 않았습니다 (그게 무슨 뜻인지 추측). 캐럿 ( ^)은 cmd.exe의 이스케이프 문자입니다. 도움이되는지 확인하기 위해 사용하려고 할 때마다 실제로 아무것도 전달하지 않았고 결과가 결코 다르지 않은 이유를 설명합니다. > _> 바보 같은 cmd.exe. 당신은 그것을 두배로하거나 인용함으로써 그것을 벗어날 수 있습니다 : git log master^^또는git log "master^"
bambams

답변:


138

HEAD^ 현재 분기 끝의 첫 번째 부모를 의미합니다.

git 커밋은 둘 이상의 부모를 가질 수 있습니다. HEAD^는의 약자이며 HEAD^1주소를 지정할 수도 있습니다.HEAD^2 적절한 등 .

뿐만 아니라 모든 커밋의 부모에게 도달 할 수 있습니다 HEAD. 또한 세대를 통해 뒤로 이동할 수도 있습니다. 예를 들어, master~2모호한 경우 첫 번째 부모를 선호하는 마스터 분기 끝의 조부모를 의미합니다. 이러한 지정자는 임의로 연결할 수 있습니다. 예를 들어 ,topic~3^2 . 관련된 대답을 참조하십시오 의 차이는 무엇 HEAD^HEAD~망할 놈을?

자세한 내용은 "개정판 지정"을 참조하십시오. 섹션을git rev-parse --help .


1
그러나 선형 히스토리 HEAD^^^에서 세 번째 이전 커밋을 반환하는 이유는 HEAD~~~무엇입니까?
Vorac

1
@Vorac 선형 역사의 경우 그렇습니다.
Greg Bacon

21

그것은 "부모"를 의미합니다. 따라서 HEAD^"현재 HEAD의 부모"를 의미합니다. 함께 연결할 수도 있습니다. HEAD^^"현재 HEAD 부모의 부모"(즉, 현재 HEAD의 조부모), HEAD^^^" 현재 HEAD 부모 부모의 부모" 등을 의미합니다.


16

^때 (캐럿)도 사용될 수 범위 지정 .

커밋에서 도달 할 수있는 커밋을 제외하기 위해 접두사 ^ 표기법 이 사용됩니다. 예를 들어 ^ r1 r2는 r2에서 도달 할 수있는 커밋을 의미하지만 r1에서 도달 할 수있는 것은 제외합니다.

<rev>

도달 할 수있는 커밋 (예 :의 조상)을 포함합니다.

^ <rev>

에서 연결할 수있는 커밋 (예 :의 조상)을 제외합니다.


10

다음은 시각적 인 설명입니다. 다음과 같은 역사가 있다고 가정합니다.

                      master  
  ... <- B <- C <- D
             /
... <- E <- F
              feature

기능이 마스터로 병합되었을 때 C두 개의 조상으로 생성되었습니다. Git은 이러한 조상 번호를 할당합니다. 메인 라인 조상 B은 1이 할당되고 피처 조상은F 은 2가 할당됩니다.

따라서를 C^1참조 B하고 C^2참조합니다 F. C^의 별칭입니다 C^1.

당신은 <rev>^3. 세 개의 분기를 병합 한 경우.


7

캐럿은 특정 커밋의 부모를 나타냅니다. 예 HEAD^를 들어 현재 HEAD 커밋의 부모를 나타냅니다. (또한 HEAD^^조부모를 나타냄).


4

캐럿은 커밋 오프셋 (상위)을 나타냅니다. 예를 들어, HEAD^"HEAD에서 한 커밋"을 HEAD^^^의미하고 "HEAD에서 세 번 커밋 "을 의미합니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.