유효한 git 태그는 어떤 이름입니까?


78

[문자가 포함 된 태그를 만드는 동안 오류 메시지가 나타납니다 .

치명적 : '['은 유효한 태그 이름이 아닙니다.

질문 : git에 태그에 대한 규칙이 있습니까?

답변:


109

이름이 유효한지 확인할 수 있습니다.

git check-ref-format

페이지 는 유효한 이름에 대한 제약을 포함합니다. 페이지에서 인용 (향후 구식 일 수 있음) :

  1. /계층 적 (디렉토리) 그룹화를 위해 슬래시 를 포함 할 수 있지만 슬래시로 구분 된 구성 요소는 점으로 시작 .하거나 시퀀스로 끝날 수 없습니다 .lock.

  2. 하나 이상의 /. 이 같은 범주의 존재 시행 heads/, tags/등을하지만, 실제 이름이 제한되지 않습니다. 경우 --allow-onelevel옵션을 사용,이 규칙은 면제됩니다.

  3. ..어디에도 두 개의 연속 된 점이있을 수 없습니다 .

  4. ASCII 제어 문자 (즉, 값이 \ 040 또는 \ 177보다 낮은 바이트 DEL), 공백, 물결표 ~, 캐럿 ^또는 콜론은 :어디에도있을 수 없습니다.

  5. 물음표 ?, 별표 *또는 여는 괄호는 [어디에도 사용할 수 없습니다 . --refspec-pattern이 규칙에 대한 예외는 아래 옵션을 참조하십시오 .

  6. 슬래시로 시작하거나 끝나 /거나 여러 개의 연속 된 슬래시를 포함 할 수 없습니다 ( --normalize이 규칙에 대한 예외는 아래 옵션 참조).

  7. 점으로 끝날 수 없습니다 ..

  8. 시퀀스를 포함 할 수 없습니다 @{.

  9. 단일 문자가 될 수 없습니다 @.

  10. 그들은을 포함 할 수 없습니다 \.

보시다시피 귀하의 경우 규칙 (5)을 위반했습니다.

--normalize플래그를 사용하여 슬래시와 관련하여 태그를 정규화 할 수 있습니다 (연속 슬래시 및 선행 슬래시 제거).

git check-ref-format --normalize "tags/weird//tag"

tags/일부 종은 당신이 검증됩니다 tag.

@NikosAlexandris와 약간의 토론을 마친 후 다음 한 줄을 작성하여 <some-tag>텍스트 피드백으로 태그를 확인할 수 있습니다 .

git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag"

이 부과 이눔 것이다 제한을 태그 이름에
user3245268

3
@ user3245268 : 예를 들어 remote/branch, 또는 HEAD^1(머리의 마지막 커밋을 얻기 위해) 등을 참조 할 수 있기 때문입니다 . 결국 태그는 커밋의 "특별한 이름"일뿐입니다. 따라서 태그, 원격 분기, 상대 경로 등간에 참조를 모호하게 만들기 위해 이름이 제한됩니다. 예를 들어 Windows에서는 ..경로에 ../foo심각한 문제가있을 수 있으므로 파일 이름을 지정할 수 없습니다 . Unix는 일반적으로 이스케이프를 사용하여이 문제를 해결하지만 여기서는 "태그 공간", "분기 공간", "상대적 커밋 공간"이 "병합"됩니다.
Willem Van Onsem

규칙 2가 잘못되었습니다. 예를 들어 v1.4버전 2.21.0에서 허용되는 유효한 태그입니다. Git Basics-Tagging을 참조하십시오 .
Arthur

@Arthur : 아니요, 자신의 문서에서 읽을 수 있듯이 그렇게하면이라는 태그를 정의하고 refs/tags/v1.4git이 refs/tags/.
Willem Van Onsem

@WillemVanOnsem 단순성을 위해 대부분의 사람들은 GitHub에 태그를 입력하거나 git로 태그를 푸시하는 경우 규칙 2를 따를 필요가 없습니다. 그래서 나는 "평신도의 조건"과 같은 관점에서 Arthur와 동의해야합니다.
해리슨 스미스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.