Programing

힘내 HEAD 및 ORIG_HEAD

lottogame 2020. 4. 19. 13:52
반응형

힘내 HEAD 및 ORIG_HEAD


이 기호들은 무엇을 의미하며 무엇을 의미합니까?

(공식 문서에서 설명을 찾을 수 없습니다)


HEAD현재 커밋에 대한 (직접 또는 간접, 즉 기호) 참조입니다. 작업 디렉토리에서 확인한 커밋 (변경 사항 또는 이와 동등한 사항이 아닌 한)은 "git commit"이 새 것을 만드는 커밋입니다. 일반적으로 HEAD이름이 지정된 다른 분기에 대한 기호 참조입니다. 이 지점은 현재 체크 아웃 된 지점 또는 현재 지점입니다. HEAD커밋을 직접 가리킬 수도 있습니다. 이 상태를 "분리 된 HEAD"라고하며 익명의 익명 분기에있는 것으로 이해 될 수 있습니다.

그리고 Git 1.8.5 이후로 @는 홀로 바로 가기입니다 HEAD.

ORIG_HEADHEAD위험한 상태 일 수있는 명령으로 설정하여 이전 상태 로 쉽게 되돌릴 수 있습니다. Git에 reflog가 있으므로 이제는 유용하지 않습니다. HEAD@{1}대충 같습니다 ORIG_HEAD( HEAD@{1}항상 마지막 값은 HEAD이고 위험한 작업 전의 ORIG_HEAD마지막 값입니다 HEAD).

자세한 내용은 git (1) 맨 페이지 , Git 사용 설명서 , Git 커뮤니티 북Git 용어집을 참조하십시오.


에서 자식 리셋

"풀"또는 "병합"은 항상 현재 분기의 원래 팁을에 둡니다 ORIG_HEAD.

git reset --hard ORIG_HEAD

열심히 재설정하면 인덱스 파일과 작업 트리가 해당 상태로 돌아가고 분기의 끝이 해당 커밋으로 재설정됩니다.

git reset --merge ORIG_HEAD

병합 결과를 검사 한 후 다른 지점의 변경 사항이 만족스럽지 않을 수 있습니다. " git reset --hard ORIG_HEAD"을 (를) 실행 하면 원래 위치로 돌아갈 수 있지만 원하지 않는 로컬 변경 내용은 삭제됩니다. " git reset --merge"는 로컬 변경 사항을 유지합니다.


패치가 적용되기 전에 ORIG_HEAD는 현재 분기의 끝으로 설정됩니다.
이 방법은 git am잘못된 분기 에서 ' '를 실행 하거나 사서함을 변경하여보다 쉽게 ​​수정되는 커밋 오류 (예 : "보낸 사람 :"줄의 + 오류) 와 같이 여러 커밋에 문제가있는 경우에 유용합니다 .

또한 병합은 항상 ' .git/ORIG_HEAD'를 HEAD의 원래 상태로 설정 하므로 ' git reset ORIG_HEAD' 를 사용하여 문제가있는 병합을 제거 할 수 있습니다 .


참고 : 여기에서

HEAD는 움직이는 포인터입니다. 때로는 현재 분기를 의미하고 때로는 그렇지 않습니다.

따라서 HEAD는 이미 "현재 지점"과 동의어 아닙니다 .

HEAD는 자식의 모든 곳 에서 "현재"를 의미 하지만 반드시 "현재 분기"(즉, 분리 된 HEAD)를 의미하지는 않습니다.

그러나 거의 항상 "현재 커밋"을 의미합니다.
커밋 " git commit"이 (가) 맨 위에 있으며 " git diff --cached"및 " git status"이 (가) 비교됩니다.
현재 분기가 매우 제한된 상황에서만 의미합니다 (정확히 분기 이름이 작동하기를 원할 때 --- commit / rebase 등을 통해 분기 팁 재설정 및 성장).

Reflog는 시간과 시간을 거슬러 올라가는 차량으로서 "현재"라는 개념과 흥미로운 상호 작용을합니다.

HEAD@{5.minutes.ago}"HEAD symref를 역 참조하여 지금 현재 어떤 지점을 찾았는지, 그리고 5 분 전에 해당 지점의 끝이 어디에 있는지 확인하십시오".
또는 "5 분 전에 HEAD라고했던 커밋은 무엇입니까, 예를 들어"git show HEAD "를 다시 한 경우"를 의미 할 수 있습니다.


git1.8.4 (2013 년 7 월) 소개 새로운 표기법을 소개 했습니다!
(실제로 2013 년 4 분기 1.8.5 또는 1.9 일 것입니다 : commit 9ba89f4로 다시 도입 되었습니다 )

대신 네 개의 대문자 "을 입력하는 HEAD"당신은 말할 수있다 " @"지금,
예를 " git log @".

커밋 cdfd948 참조

HEAD특히 ' @'를 대신 사용할 수있을 때 ' '를 입력하는 것은 지루 합니다.

' @' 를 선택하는 이유는 참조가없고 조작이없는 것을 제외하고는 ref@op구문 (예 :)에서 자연스럽게 뒤 따르기 때문에이를 HEAD@{u}갖지 않으면 ' HEAD' 로 간주 됩니다.

이제 우리는 ' git show @~1'를 사용할 수 있습니다 .

지금까지 ' @'은 (는) 유효한 이름이지만이 아이디어와 충돌하므로 유효하지 않게하겠습니다. 아마도이 이름을 사용한 사람은 거의 없을 것입니다.


1.8.4-RC3 기간 동안 블로그 게시물 (14 일, 2013 년 8 월)이 기능이 복귀 지연되었다 (감사합니다 발표 컵 케이크를 위한 헤드 업 ). 커밋 9ba89f4 (2013 년 9 월)
와 함께 다시 소개됩니다 .

commit 2c2b664를 참조하십시오 :

"새 @단축키 추가 HEAD"

커밋 cdfd948 은 " @"(그리고 수정자가 @{u}적용된 형식) 에만 적용되는 것이 아니라 " refs/heads/@/foo" 에도 영향을 미치므로 " "에 영향을 미칩니다 .

속기의 기본 개념이 좋을 수 있으며 나중에 주제를 다시 시도 할 수 있지만 다음 릴리스에서 현재 사용 사례에 영향을 미치지 않도록 되 돌리겠습니다.


HEAD는 현재 분기를 가리키고 ORIG_HEAD는 "위험한"작업을 수행하기 전에 이전 HEAD를 저장하는 데 사용됩니다.

예를 들어 git-rebase 및 git-am은 변경 사항을 적용하기 전에 분기의 원래 팁을 기록합니다.

참고 URL : https://stackoverflow.com/questions/964876/head-and-orig-head-in-git

반응형