Ubuntu 10.10 amd64에서 git 1.7.1을 사용하고 있으며 내 프로젝트로 컴파일하는 자동화 된 버전 정보에서 사용하기 위해 내 저장소 HEAD의 해시를 추출하려고합니다.
과거에는 항상
git describe --tags
그러나 git은 이제 던지고 있습니다.
fatal: No names found, cannot describe anything.
나 한테. 그게 무슨 뜻인지 아는 사람 있나요?
Google은 조회수가 거의없고 해결책이 없습니다.
답변
당신이 당신의 ID를 원한다면 HEAD당신은 필요하지 않습니다 describe, 당신은 사용해야 rev-parse합니다.
git rev-parse HEAD
축약 된 해시를 원하면 --short.
git rev-parse --short HEAD
적절한 태그를 찾을 수없는 경우 “describe”가 축약 된 해시로 대체되도록하려면을 사용할 수 있습니다 --always.
git describe --always
답변
git-describe가장 최근의 태그와 해당 태그 이후의 커밋 수를 포함 할 것으로 예상 하는 것 같습니다. 그러나 fatal: No names found메시지는 저장소에 태그가 없음을 의미 합니다. git describe최신 태그를 알려주 려면 커밋 기록에 적어도 하나의 태그가 있어야합니다 .
추측 만했지만 다른 곳에서 커밋에 태그를 지정했지만 태그를 업스트림으로 푸시하지 않았을 수 있습니다 (커밋을 업스트림으로 푸시하고 나중에 태그를 지정하고 리 푸시하지 않았습니까?). 이제 업스트림의 새 복제본이이 오류를 제공합니다 (태그가 없기 때문에). 이 경우 git push --tags원하는 태그가있는 저장소에서 시도 할 수 git describe있습니다 (예상 되는 작업을 수행하는 위치 ). 그런 다음 git pull태그가없는 저장소에서 수행하십시오.
답변
CI 도구가 저장소의 얕은 복제를 수행하는 CI 빌드 환경에서이 문제가 발생했습니다. 내 개발 환경에서 명령이
git describe --tags
나에게 다음과 같은 출력을 줄 것이다.
2.2.12-7-g8ec9d6c9
빌드 환경에서는 “치명적인 이름을 찾을 수 없음”오류가 발생합니다. –always 태그를 사용해 본 경우
git describe --tags --always
그런 다음 단순히 최신 커밋의 해시를 가져 오지만 해당 커밋 이전의 가장 최근 태그는 가져 오지 않습니다.
8ec9d6c9
수행 git pull빌드 환경에서를 것은 도움이되지 않을 것입니다. 리포지토리가 얕게 복제 된 후에는 향후 pull이 태그를 업데이트하지 않기 때문입니다.
해결책은 빌드 환경에서 저장소의 초기 복제본이 얕은 복제본이 아닌지 확인하는 것이 었습니다 (예 : git clone명령이 --depth, --shallow-since또는 --shallow-exclude매개 변수 와 함께 사용되지 않음 ).
답변
이는 저장소에 태그가없는 경우 발생합니다. 저장소 가 태그가, 당신은 (이 TravisCI 또는 GitHub의 작업과 같은 CI 시스템의 기본입니다) 얕은 클론에있어.
얕은 클론 내에서 기록 (태그 포함)을 가져 오려면 다음을 실행합니다.
git fetch --prune --unshallow
예를 들어 GitHub 작업의 경우 :
- uses: actions/checkout@v2
- run: git fetch --prune --unshallow
나중에 git describe다시 작동합니다.
답변
CI 작업에서 작업하는 동안 비슷한 문제가 있었는데 문제는 git clone 또는 checkout scm가 저장소를 복제하는 동안 태그를 가져 오지 못했습니다.
태그없이 가져 오기 https : // github . ********** 에서 업스트림 변경 사항 가져 오기
“고급 복제 동작”을 선택한 다음 태그 가져 오기를 클릭하여 가져 오기 태그를 활성화 할 수 있습니다.
답변
Travis CI의이 오류 메시지로 인해 여기에 온 경우 다음 설정을 사용하여 얕은 복제를 방지 할 수 있습니다.
git:
depth: false
테스트 git fetch --tags했지만 작동하지 않았습니다.
답변
이 명령은 나를 도왔습니다. git fetch -t

