브랜치 및 태그 이름 개요
대부분의 리포지토리는 간단한 분기 이름(예: 또는 )을 사용합니다. 태그 이름은 일반적으로 버전 번호(예: )와 같은 기본 형식을 따릅니다. 분기 이름과 태그 이름 모두 구조에 경로 구분 기호()를 사용할 수도 있습니다(예: 또는 ). 일부 예외(예: 이름을 슬래시로 시작 또는 끝나지 않거나 이름에 연속 슬래시 포함)를 제외하고 Git은 분기 및 태그 이름에 사용할 수 있는 문자에 대한 제한이 거의 없습니다. 자세한 내용은 Git 설명서의 git-check-ref-format을 참조하세요.
특수 문자를 이스케이프해야 하는 이유
CLI를 사용할 때 셸 환경에 특별한 의미가 있는 특수 문자가 분기 또는 태그 이름에 포함된 경우가 있을 수 있습니다. Git 명령에서 이러한 문자를 안전하게 사용하려면 따옴표로 묶거나 이스케이프해야 합니다. 그러지 않으면 명령이 의도하지 않은 영향을 미칠 수 있습니다.
예를 들어 이 문자는 많은 셸에서 변수를 참조하는 데 사용됩니다. 대부분의 셸은 "hello-변수의 현재 값"과 같은 유효한 분기 이름을 리터럴 문자열로 해석하기보다는, 단어 "hello" 뒤에 하이픈을 붙이고 그 뒤에 변수가 현재 지닌 값을 연결한 것으로 해석합니다. 분기 이름에 문자가 포함된 경우 변수 참조로 확장되지 않도록 셸을 중지해야 합니다. 마찬가지로 분기 이름에 세미콜론()이 포함된 경우 대부분의 셸은 이를 명령 구분 기호로 해석하므로 따옴표로 묶거나 이스케이프해야 합니다.
브랜치 및 태그 이름에서 특수 문자를 회피하는 방법
특수 문자가 있는 대부분의 분기 및 태그 이름은 작은따옴표에 이름을 포함하여 처리할 수 있습니다(예: ).
- Bash 셸에서는 문자열을 작은따옴표로 묶으면 작은따옴표 안에 있는 문자의 리터럴 값이 유지됩니다.
- Zsh는 Bash와 유사하게 동작합니다. 그러나 이 동작은 옵션을 사용하여 구성할 수 있습니다.
- 또한 PowerShell은 작은따옴표 안에 있는 문자를 해석 없이 그대로 처리합니다.
이러한 셸의 경우 주요 예외는 분기 또는 태그 이름에 작은따옴표가 포함된 경우입니다. 이 경우 셸에 대한 공식 설명서를 참조해야 합니다.
- Bash 설명서
- Zsh 설명서
- Fish 설명서
- PowerShell 설명서
브랜치 및 태그 이름 지정
가능하면 특수 문자를 포함하지 않는 분기 및 태그 이름을 만드세요. 특수 문자는 이스케이프해야 하기 때문입니다. 분기 이름 및 태그 이름에 사용할 안전한 기본 문자 집합은 다음과 같습니다.
- 영어 알파벳(A부터 Z까지)
- 숫자(부터 ~까지)
- 제한된 문자 부호 집합:
- 마침표()
- 하이픈()
- 밑줄()
- 앞 슬래시
혼동을 방지하려면 분기 이름을 문자로 시작해야 합니다.
GitHub의 이름에 대한 제한 사항
GitHub은(는) 소수의 분기 및 태그 이름이 푸시되지 않도록 제한합니다. 이러한 제한 사항은 다음과 같습니다.
- 실제 Git 개체 ID와의 혼동을 방지하기 위해 Git 개체 ID(0
9 및 AF만 포함하는 40자)와 같은 이름이 없습니다. - Git refs의 전체 이름과 혼동을 방지하기 위해 이름이 로 시작되지 않습니다. ref에 대한 자세한 내용은 Git 설명서의 Git 참조를 참조하세요.