초기 커밋을 참조하는 방법?
리포지토리의 초기 커밋을 참조 해야하는 스크립트가 있습니다. 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
'programing tip' 카테고리의 다른 글
저장 프로 시저에 대한 명명 규칙은 무엇입니까? (0) | 2020.07.14 |
---|---|
git은 파일 해시를 어떻게 계산합니까? (0) | 2020.07.14 |
numpy를 가져온 후 멀티 프로세싱에서 단일 코어 만 사용하는 이유는 무엇입니까? (0) | 2020.07.14 |
일반 위임 매개 변수로 제공 될 때 람다 식을 캐스트해야하는 이유 (0) | 2020.07.14 |
Visual Studio 2010없이 MSBuild 4.0 설치 (0) | 2020.07.14 |