Aqui estão algumas convenções de nomenclatura de ramificações que eu uso e os motivos delas
Convenções de Nomenclatura de Filiais
- Use tokens de agrupamento (palavras) no início dos nomes de suas ramificações.
- Defina e use tokens de lead curtos para diferenciar ramificações de maneira significativa para o seu fluxo de trabalho.
- Use barras para separar partes dos nomes de suas ramificações.
- Não use números simples como peças principais.
- Evite nomes descritivos longos para ramos de vida longa.
Tokens de grupo
Use tokens de "agrupamento" na frente dos nomes de suas ramificações.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
Os grupos podem ser nomeados como você desejar para corresponder ao seu fluxo de trabalho. Eu gosto de usar substantivos curtos para os meus. Continue lendo para mais clareza.
Tokens curtos e bem definidos
Escolha tokens curtos para que eles não adicionem muito ruído a todos os nomes de suas ramificações. Eu uso estes:
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
Cada um desses tokens pode ser usado para informar a qual parte do seu fluxo de trabalho cada filial pertence.
Parece que você tem várias ramificações para diferentes ciclos de alteração. Não sei quais são seus ciclos, mas vamos supor que eles sejam 'novos', 'testando' e 'verificados'. Você pode nomear seus ramos com versões abreviadas dessas tags, sempre escritas da mesma maneira, para agrupá-las e lembrá-lo em que estágio você está.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Você pode dizer rapidamente quais ramificações atingiram cada estágio diferente e agrupá-las facilmente usando as opções de correspondência de padrões do Git.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Use barras para separar as peças
Você pode usar quase todos os delimitadores que desejar nos nomes das filiais, mas as barras são as mais flexíveis. Você pode preferir usar traços ou pontos. Mas as barras permitem que você renomeie algumas ramificações ao empurrar ou buscar de / para um controle remoto.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Para mim, as barras também funcionam melhor para expansão de guias (conclusão de comandos) no meu shell. Da maneira que eu o configurei, posso procurar ramificações com diferentes sub-partes digitando os primeiros caracteres da parte e pressionando a tecla TAB. O Zsh me fornece uma lista de ramos que correspondem à parte do token que eu digitei. Isso funciona para os tokens anteriores e os incorporados.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(O Zshell é muito configurável sobre a conclusão de comandos e eu também poderia configurá-lo para lidar com traços, sublinhados ou pontos da mesma maneira. Mas eu escolho não fazê-lo.)
Também permite procurar ramificações em muitos comandos git, como este:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Advertência: Como Slipp aponta nos comentários, as barras podem causar problemas. Como os ramos são implementados como caminhos, você não pode ter um ramo chamado "foo" e outro ramo chamado "foo / bar". Isso pode ser confuso para novos usuários.
Não use números simples
Não use o uso de números simples (ou números hexadecimais) como parte do esquema de nomes de ramificações. Dentro da expansão de tabulação de um nome de referência, o git pode decidir que um número faz parte de um sha-1 em vez de um nome de ramificação. Por exemplo, meu rastreador de problemas nomeia erros com números decimais. Eu nomeio meus ramos relacionados CRnnnnn em vez de apenas nnnnn para evitar confusão.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Se eu tentasse expandir apenas 15032, o git não teria certeza se queria pesquisar nomes de SHA-1 ou de filial, e minhas escolhas seriam um pouco limitadas.
Evite nomes descritivos longos
Nomes longos de ramificações podem ser muito úteis quando você estiver olhando para uma lista de ramificações. Mas isso pode atrapalhar a visualização de logs de uma linha decorados, pois os nomes das ramificações podem consumir a maior parte da linha única e abreviar a parte visível do log.
Por outro lado, nomes longos de ramificações podem ser mais úteis em "mesclar confirmações" se você não as reescrever habitualmente à mão. A mensagem de confirmação de mesclagem padrão é Merge branch 'branch-name'
. Você pode achar mais útil exibir mensagens de mesclagem como em Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
vez de apenas Merge branch 'fix/CR15032'
.