다음은 내가 사용하는 지점 명명 규칙과 그 이유입니다.
지점 명명 규칙
- 지점 이름의 시작 부분에 그룹화 토큰 (단어)을 사용하십시오.
- 짧은 리드 토큰을 정의하고 사용하여 워크 플로우에 의미있는 방식으로 분기를 차별화하십시오.
- 슬래시를 사용하여 브랜치 이름의 일부를 분리하십시오.
- 맨 앞에 숫자를 사용하지 마십시오.
- 오래 지속되는 가지에 대해 긴 설명 이름을 사용하지 마십시오.
그룹 토큰
지점 이름 앞에 "그룹화"토큰을 사용하십시오.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
워크 플로우에 맞게 그룹 이름을 지정할 수 있습니다. 나는 짧은 명사를 사용하고 싶습니다. 더 명확하게 읽으십시오.
잘 정의 된 짧은 토큰
짧은 토큰을 선택하면 모든 지사 이름에 너무 많은 소음이 발생하지 않습니다. 나는 이것을 사용한다 :
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
이러한 각 토큰을 사용하여 각 분기가 속한 워크 플로의 어느 부분을 알려줄 수 있습니다.
서로 다른 변경주기에 대해 여러 개의 분기가있는 것 같습니다. 나는 당신의 사이클이 무엇인지 모르지만, 그것이 '신규', '테스트'및 '확인'이라고 가정합시다. 이 태그를 축약 된 버전의이 태그로 이름을 지정할 수 있으며 항상 같은 방식으로 철자하여 그룹화하고 현재 단계를 알려줍니다.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
서로 다른 단계에 도달 한 지점을 신속하게 파악할 수 있으며 Git의 패턴 일치 옵션을 사용하여 쉽게 분기를 그룹화 할 수 있습니다.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
슬래시를 사용하여 부품 분리
분기 이름에 원하는 구분 기호를 대부분 사용할 수 있지만 슬래시가 가장 유연합니다. 대시 또는 점을 사용하는 것이 좋습니다. 그러나 슬래시를 사용하면 리모콘으로 밀거나 가져올 때 분기 이름을 바꿀 수 있습니다.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
나에게 슬래시는 쉘의 탭 확장 (명령 완성)에 더 효과적입니다. 내가 구성한 방식으로 파트의 첫 문자를 입력하고 Tab 키를 눌러 다른 하위 파트가있는 분기를 검색 할 수 있습니다. 그런 다음 Zsh는 내가 입력 한 토큰의 일부와 일치하는 분기 목록을 제공합니다. 이것은 내장 토큰뿐만 아니라 이전 토큰에도 적용됩니다.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell은 명령 완료에 대해 매우 구성 가능하며 대시, 밑줄 또는 점을 같은 방식으로 처리하도록 구성 할 수도 있습니다. 그러나 나는하지 않기로 선택합니다.)
또한 다음과 같이 많은 git 명령에서 분기를 검색 할 수 있습니다.
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
주의 사항 : Slipp이 주석에서 지적한 것처럼 슬래시가 문제를 일으킬 수 있습니다. 분기는 경로로 구현되므로 "foo"라는 분기와 "foo / bar"라는 다른 분기를 가질 수 없습니다. 새로운 사용자에게는 혼란 스러울 수 있습니다.
베어 번호를 사용하지 마십시오
분기 이름 지정 체계의 일부로 베어 숫자 (또는 16 진수)를 사용하지 마십시오. 참조 이름의 탭 확장 내에서 git은 숫자가 지점 이름 대신 sha-1의 일부라고 결정할 수 있습니다. 예를 들어, 내 이슈 트래커는 10 진수로 버그를 명명합니다. 혼란을 피하기 위해 nnnnn 대신 관련 지점의 이름을 CRnnnnn으로 지정합니다.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
15032 만 확장하려고하면 git은 SHA-1 또는 분기 이름을 검색할지 여부를 확신 할 수 없으며 선택 사항이 다소 제한적입니다.
긴 설명 이름을 피하십시오
긴 지점 이름은 지점 목록을 볼 때 매우 유용합니다. 그러나 분기 이름이 대부분의 한 줄을 차지하고 로그의 보이는 부분을 줄여서 장식 된 한 줄 로그를 볼 때 방해가 될 수 있습니다.
반면에 긴 브랜치 이름은 습관적으로 손으로 다시 쓰지 않으면 "커밋 병합"에서 더 도움이 될 수 있습니다. 기본 병합 커밋 메시지는 Merge branch 'branch-name'
입니다. 병합 메시지 Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
를 그냥 대신 표시하는 것이 더 도움이 될 수 있습니다 Merge branch 'fix/CR15032'
.