2009-12-23 3 views
88

여기서 answer to a question은 git에서 삭제 된 파일을 복원하는 데 도움이됩니다.캐럿 (^) 문자의 의미는 무엇입니까?

이 솔루션은

git checkout <deleting_commit>^ -- <deleted_file_path> 

캐럿 문자 (^)는 무엇입니까

입니까? 나는 다른 곳에서 git에서 매우 유용한 일을하는 것을 보았다. 그것은 마법입니다. 누군가 나를 위해 그것을 망치고 그것이 무엇을하는지 말해 주시겠습니까?

+7

FYI on windows : ^는 DOS 셸에서 예상대로 작동하지 않습니다. git bash shell을 사용하면 작동한다. –

+5

내가 그것을 사용하려고 시도했을 때 (그것이 의미하는 바를 짐작할 때) 그것은 나에게 일어나지 않았다. 캐럿 ('^')은 cmd.exe의 이스케이프 문자입니다. 도움이 될만한지 알아보기 위해 사용할 때마다 실제로 아무 것도 지나치지 않고 결과가 전혀 다른 이유를 설명합니다. > _> 어리석은 cmd.exe. 당신은 그것을 두배로하거나 그것을 인용함으로써 그것을 벗어날 수 있습니다 : 'git log master ^^'또는'git log "master ^"' – bambams

답변

100

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

git 커밋에는 둘 이상의 부모가있을 수 있습니다. HEAD^HEAD^1의 줄임말이며, HEAD^2 등의 주소를 적절히 지정할 수도 있습니다. 어떤 커밋의

당신은 단지 HEAD, 부모에게 얻을 수 있습니다. 세대를 거쳐 다시 이동할 수도 있습니다. 예를 들어, master~2은 모호한 경우 첫 번째 상위를 선호하는 마스터 분기의 끝 조부모를 의미합니다. 이러한 지정자는 임의로 체인화 될 수 있습니다. , , topic~3^2.

전체 내용 git rev-parse --help“Specifying Revisions” 절을 참조하십시오.

+1

그러나 선형 기록에서, 왜 'HEAD ^^^' 즉'HEAD ~~~'와 동등한가? – Vorac

+1

@Vorac 선형 기록의 경우 예. –

7

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

19

"parent of"를 의미합니다. 따라서 HEAD^은 "현재 HEAD의 부모"를 의미합니다. 함께 묶을 수도 있습니다 : HEAD^^은 "현재 머리의 부모"(즉, 현재 머리의 조부모)를 의미하고, HEAD^^^은 "현재 머리의 부모의 부모"를 의미하므로 앞으로.

3

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

4

(^)는 명령의 상위 소스를 가져옵니다. 즉, HEAD ^는 HEAD의 부모를 갖습니다.

1

그렉 베이컨 (Greg Bacon)은 훌륭한 링크를 제공했지만 꽤 밀도가 있습니다. 힘내 소개 문서는 온라인으로도 개정 및 범위 지정자를 소개 :

https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection

+3

이 링크는 의도 한 위치에 더 가깝습니다. http://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Ancestry-References – bholben

5

^ (캐럿)도 때 specifying ranges 사용할 수 있습니다. 제외 할

접두사^표기법 사용 입니다, 커밋에서 도달 커밋합니다. 예 :^r1 r2는 r2에서 도달 가능한 커밋을 의미하지만 은 r1에서 도달 할 수 없습니다.

<REV>

은 (즉,의 조상)에서 도달 가능한 커밋 포함.

^<REV>

은 (즉,의 조상)에서 도달 가능한 커밋 제외.

4

다음은 시각적 인 설명입니다.

기능을 마스터에 합병되었다
   master 

    A <- B <- C <- D 
     /
    E <- F 
      feature 

C 두 개의 조상으로 만들었습니다 : 당신은 역사과 같이 있다고 가정하자. 힘내는이 조상 번호를 할당합니다. 메인 라인 조상 B 1이 할당되고 상위 기능 F 따라서 C^1B 지칭하고 C^2F 지칭

2가 할당된다. C^C^1의 별명입니다.

<rev>^3 만 사용하게됩니다. 당신이 3 개의 가지의 합병을 수행했다면.