Estou usando um repositório git local interagindo com o repositório CVS do meu grupo há vários meses, agora. Fiz um número quase neurótico de galhos, a maioria dos quais se fundiu de volta ao meu tronco. Mas nomear está começando a se tornar um problema. Se eu tiver uma tarefa facilmente nomeada com um rótulo simples, mas a realizo em três estágios, cada um incluindo sua própria situação de ramificação e mesclagem, posso repetir o nome da ramificação a cada vez, mas isso torna o histórico um pouco confuso. Se eu for mais específico nos nomes, com uma descrição separada para cada estágio, os nomes das filiais começarão a ficar longos e difíceis de manejar.
Eu aprendi olhando através de tópicos antigos aqui que eu poderia começar a nomear ramos com um / no nome, ou seja, tópico / tarefa ou algo parecido. Posso começar a fazer isso e ver se isso ajuda a manter as coisas melhor organizadas.
Quais são algumas das práticas recomendadas para nomear ramificações git?
Edit: Ninguém realmente sugeriu quaisquer convenções de nomenclatura. Eu excluo ramificações quando terminar com elas. Por acaso, tenho vários por aí, devido à gerência constantemente ajustando minhas prioridades. :) Como exemplo de por que eu posso precisar de mais de uma ramificação em uma tarefa, suponha que eu precise confirmar o primeiro marco discreto da tarefa no repositório CVS do grupo. Nesse ponto, devido à minha interação imperfeita com o CVS, eu executaria esse commit e depois mataria esse branch. (Vi muita estranheza interagindo com o CVS se tentar continuar usando a mesma ramificação nesse ponto.)
fonte
KEY-1234/allow-users-to-do-smart-stuff
Respostas:
Aqui estão algumas convenções de nomenclatura de ramificações que eu uso e os motivos delas
Convenções de Nomenclatura de Filiais
Tokens de grupo
Use tokens de "agrupamento" na frente dos nomes de suas ramificações.
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:
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á.
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.
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.
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.
(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:
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.
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 emMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
vez de apenasMerge branch 'fix/CR15032'
.fonte
bug/20574/frabnotz-finder
ebug/20424
é que, depois que você inicia sem um sub-token, não pode adicioná-lo mais tarde e vice-versa. EG: Se você criar umabug/20424
ramificação, não poderá criar umabug/20424/additional-fixing
ramificação posteriormente (a menos que exclua abug/20424
ramificação). Da mesma forma, sebug/20574/frabnotz-finder
já é um ramo, você não pode criar umbug/20574
ramo. Costumo usar um delimitador que não seja do sub-token em casos como este (por exemplobug/20574_frabnotz-finder
) ou escolher um nome padrão para o sub-token (por exemplobug/20424/main
).feature
grupo e umbug
grupo, expansíveis para exibiçãofoo
,bar
tags para o primeiro e a20574
,20592
groups e20424
,21334
tags para o último.git branch -a
, e obtendoremotes/origin/master
, etc. Quando vejo o git me falar sobre um ramo, não uso barras, então quando vejo um, sei que é uma referência "especial".Um modelo de ramificação Git bem-sucedido de Vincent Driessen tem boas sugestões. Uma imagem está abaixo. Se este modelo de ramificação lhe interessar, considere a extensão do fluxo para git . Outros comentaram sobre o fluxo
O modelo de Driessen inclui
Uma ramificação principal, usada apenas para liberação. Nome típico
master
.Um ramo "desenvolvido" fora desse ramo. Esse é o usado para a maioria dos trabalhos da linha principal. Nome comum
develop
.Vários ramos de recursos fora do ramo de desenvolvimento. Nome com base no nome do recurso. Eles serão mesclados novamente no desenvolvimento, não nos ramos mestre ou de liberação.
Libere a ramificação para manter as liberações candidatas, com apenas correções de bugs e sem novos recursos. Nome típico
rc1.1
.Os hotfixes são ramificações de curta duração para alterações que vêm do master e serão inseridas no master sem a participação do branch de desenvolvimento.
fonte
Minha preferência pessoal é excluir o nome da ramificação depois que terminar uma ramificação de tópico.
Em vez de tentar usar o nome do ramo para explicar o significado do ramo, inicio a linha de assunto da mensagem de confirmação no primeiro commit nesse ramo com "Branch:" e incluo explicações adicionais no corpo da mensagem, se o assunto não me dá espaço suficiente.
O nome do ramo em meu uso é puramente um identificador para se referir a um ramo de tópico enquanto trabalha nele. Depois que o trabalho no ramo de tópico é concluído, eu me livro do nome do ramo, às vezes marcando o commit para referência posterior.
Isso torna a saída
git branch
mais útil também: lista apenas ramificações de longa duração e ramificações de tópicos ativas, nem todas as ramificações.fonte
Misturei e combinei com diferentes esquemas que vi e com base nas ferramentas que estou usando.
Portanto, o nome completo do meu ramo seria:
que seria traduzido para:
As partes são separadas por barras, porque elas são interpretadas como pastas no SourceTree para facilitar a organização. Usamos o Jira para o rastreamento de problemas, portanto, a inclusão do número facilita a pesquisa no sistema. A inclusão desse número também o torna pesquisável ao tentar encontrar esse problema no Github ao tentar enviar uma solicitação de recebimento.
fonte
name/feature/issue-tracker-number-short-description
Por que são necessárias três ramificações / mesclagens para cada tarefa? Você pode explicar mais sobre isso?
Se você usa um sistema de rastreamento de bugs, pode usar o número do bug como parte do nome da filial. Isso manterá os nomes das ramificações exclusivos e você poderá prefixá-los com uma palavra curta e descritiva ou duas para mantê-los legíveis por humanos, como
"ResizeWindow-43523"
. Isso também ajuda a facilitar as coisas quando você limpa os galhos, pois pode procurar o bug associado. É assim que costumo nomear meus galhos.Como essas ramificações acabam sendo mescladas novamente no mestre, você deve excluí-las com segurança depois de mesclar. A menos que você esteja se fundindo
--squash
, o histórico inteiro da ramificação ainda existirá, caso você precise.fonte
Observe que, conforme ilustrado no commit e703d7 ou commit b6c2a0d (março de 2014), agora parte do Git 2.0, você encontrará outra convenção de nomenclatura (que pode ser aplicada às ramificações).
Um nome de filial não pode ter espaço (consulte " Quais caracteres são ilegais em um nome de filial? " E a
git check-ref-format
página do manual ).Portanto, para cada nome de filial que seria representado por uma expressão com várias palavras, usar uma '
-
' (traço) como separador é uma boa ideia.fonte
Seguindo a sugestão de farktronix, usamos os números de ticket de Jira para similares em mercurial, e estou planejando continuar usando-os para ramificações git. Mas acho que o próprio número do bilhete provavelmente é único o suficiente. Embora possa ser útil ter uma palavra descritiva no nome do ramo, conforme observado pelo farktronix, se você alternar entre ramos com bastante frequência, provavelmente precisará digitar menos. Então, se você precisar saber o nome da filial, procure no Jira as palavras-chave associadas no ticket, se não souber. Além disso, você deve incluir o número do ticket em cada comentário.
Se sua ramificação representa uma versão, parece que a convenção comum é usar o formato xxx (exemplo: "1.0.0") para nomes de ramificações e vx.xx (exemplo "v1.0.0") para nomes de marcas (para evitar conflitos) . Consulte também: existe uma convenção de nomenclatura padrão para tags git
fonte
v1.2.4
ramificação acabe levando a um ponto final com umav1.2.4
tag (estou correto ao assumir que esta é a situação em que você está nomeando ramificações e tags após uma versão) , isso importa? A tag ainda pode ser acessada emrefs/tags/v1.2.4
e a ramificação emrefs/heads/v1.2.4
, e parece que o Git preferirá o nome da tag quando for ambíguo (com um aviso).