유효한 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.