programing tip

초기 커밋을 참조하는 방법?

itbloger 2020. 7. 14. 20:53
반응형

초기 커밋을 참조하는 방법?


리포지토리의 초기 커밋을 참조 해야하는 스크립트가 있습니다. git에는 특별한 참조 HEAD가 있지만 해당하는 것은 없습니다 TAIL. 나는 git help rev-parse나를 도울 것 같은 것을 찾을 수 없습니다 .

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

git show TAIL

내가 가진 하나의 옵션은 다음과 같습니다.

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

그것은 꽤 해키이며 git log의 출력에 영향을 미치지 않습니다.

지금은 초기 커밋에 태그를 지정하고이를 내 참조 사양으로 사용합니다. 그러나 일반적인 도구를 출시하고 싶기 때문에 훌륭한 옵션은 아닙니다.


스크립팅에 git-log를 사용하지 마십시오. git-rev-list 또는 git-log를 지정된 사용자 정의 형식 ( "--format = <sth> "옵션)으로 사용하십시오.

질문에 추가 문제가 있습니다 : 저장소에 하나 이상의 TAIL 루트 커밋 (parentless commit) 이 존재할 수 있습니다 (git.git의 'html', 'man'및 'todo'와 같이 연결이 끊긴 분기를 할인하더라도) 저장소). 이는 일반적으로 하나의 프로젝트에서 하나의 프로젝트를 결합하거나 별도로 개발 된 하위 프로젝트의 하위 트리 병합을 사용하여 발생합니다.

예를 들어 git 저장소에는 6 개의 루트 커밋이 있습니다 : git-gui, gitk (하위 트리 병합), gitweb (병합, 더 이상 별도로 개발되지 않음), git 메일 도구 (프로젝트 히스토리 초기에 병합) 및 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 보다 안정적인 옵션입니다.

참고 URL : https://stackoverflow.com/questions/1006775/how-to-reference-the-initial-commit

반응형