문제

저장소의 초기 커밋을 참조 해야하는 스크립트가 있습니다. GIT에는 특별한 참조가 있습니다 HEAD, 그러나 해당 사항이 없습니다 TAIL. 나는 아무것도 찾을 수 없다 git help rev-parse 그것은 나를 도와 줄 것 같습니다.

내가하고 싶은 일은 다음과 같습니다.

git show TAIL

다음은 다음과 같습니다.

git show `git log --reverse | if read a commit ; then echo $commit ; fi`

그것은 꽤 해킹되고 git 로그의 출력에 달려 있습니다.

지금 당장 나는 단지 초기 커밋을 태그하고 그것을 내 refspec으로 사용합니다. 그러나 일반적인 도구를 공개하고 싶습니다. 좋은 선택은 아닙니다.

도움이 되었습니까?

해결책

스크립팅에 git-log를 사용하지 마십시오 : 지정된 사용자 정의 형식 ( "-format =u003Csth>" 옵션).

질문에 추가적인 문제가 있습니다. 존재할 수 있습니다. 하나 이상 그 리포지토리 (Git.git repository)의 'html', 'man'및 'todo'와 같은 연결이 끊어진 지점을 할인하더라도 이러한 테일 루트 커밋 (Parentles Commit). 이는 일반적으로 별도의 프로젝트에 하나씩 가입하거나 별도로 개발 된 하위 프로젝트의 하위 트리 병합을 사용한 결과입니다.

예를 들어 git 리포지토리는 6 개의 루트 커밋이 있습니다 : Git-Gui, Gitk (Subtree-Merged), GitWeb (더 이상 별도로 개발되지 않음), GIT 메일 도구 (프로젝트 이력 초기에 합병) 및 P4-Fast-Export (P4-Fast-Export)가 있습니다. 아마 우연히). 이는 'HTML 및'Man '지점의 뿌리, 사전 생성 된 문서를 포함하는 "편의"지점 및 TODO 목록 및 스크립트가있는'TODO '브랜치를 포함하지 않습니다.


GIT 1.7.4.2 또는 새로 사용하면 --max-parents 옵션:

$ git rev-list --max-parents=0 HEAD

그렇지 않으면 다음을 사용하여 현재 지점에서 액세스 할 수있는 모든 부모없는 (루트) 커밋 목록을 얻을 수 있습니다.

$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"

다른 팁

git rev-list HEAD | tail -n 1 보다 안정적인 옵션입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top