2011-01-20 27 views
39

¿Hay alguna manera de anotar una rama? Sería bueno poder hacer algo como:¿Cómo anotar una rama?

 
$ git notes add branch-name -m 'This branch is for whatever' 

pero que por supuesto no es muy útil, ya que la nota está relacionada con el actual jefe de la rama en lugar de la propia oficina.

Una solución fácil es soltar un README.branch-name en el repositorio, pero parece torpe. Un poco más elegante es tener una rama huérfana que no contenga nada más que README.branch-names. Estoy buscando una forma de registrar cuál es el propósito de la rama, además de simplemente ponerlo en el mensaje de confirmación para la "primera" confirmación de la rama. Puse "primero" entre comillas porque no siempre está claro lo que significa eso, que es la razón por la cual no es conveniente colocar la discusión en un mensaje de compromiso. A menudo es difícil encontrar la confirmación en la que se graba ese mensaje.

+3

git checkout -b long_branch_name_that_means_something –

+6

duplicado: http://stackoverflow.com/questions/2108405/branch-descriptions-in-git –

+1

Un lado: Las ramas de larga vida deberían ser pocas y conocidas como maestras o de desarrollo. Creo que si tienes tantas ramas que necesitas describirlas, entonces es probable que tengas un problema de flujo de git o no entiendo bien cómo estás usando git. – datashaman

Respuesta

33

Este sería un enfoque totalmente diferente que git note, pero podría usar git config para esta funcionalidad.

$ git config branch.<branch-name>.note 'This is what this branch is for'

Esto puede tener un alias para hacer la interfaz más simple (supongo que esto puede ser mejorado pero esto es lo que yo uso):

$ git config alias.branch-note '!git config branch.$(git symbolic-ref --short HEAD).note $(if [ $# -gt 0 ]; then $1; fi)'

Esto le permite establecer la nota al igual que la rama (asegúrese de que usted cita la nota):

$ git branch-note 'This is what this branch is for'

A continuación, puede recuperar las ramas actuales señalan como esto:

$ git branch-note 
This is what this branch is for 

Como beneficio adicional, las entradas de configuración definidos en el espacio de nombres branch.<branch-name> seguirá los cambios de nombre de rama y ser limpiado automáticamente si se elimina la rama más tarde. Estas entradas de configuración superfluas solo persistirán mientras exista la rama, y ​​en ese momento se eliminarán automáticamente.

Una desventaja de este enfoque es que sólo se puede almacenar una "nota" por sucursal. Las llamadas subsiguientes de nota de bifurcación con un argumento sobrescribirán la nota de bifurcación anterior. Tampoco obtendrá el beneficio de almacenar el mensaje en un objeto git rastreable, pero tal vez sea suficiente para sus propósitos.

+5

¿Esta nota se enviará a repositorios remotos? –

+5

No, ya que esto es estrictamente una configuración 'git config', no se empuja/tira a ninguna parte (como todas las demás opciones de configuración). –

+11

hoy en día en un alias para esto - 'git branch --edit-description' - es solo que la propiedad es" descripción ", no" no "- git config branch. .description mostrará esa descripción. – shabunc

0

No. Las notas se adjuntan a identificadores de confirmación específicos.

2

Puede crear un "error de seguimiento" en su rastreador de problemas donde describe la gran característica nueva en gran detalle, con maquetas y diagramas UML y todo, y luego el nombre de la rama bug1234.

4

Usando la solución de Brian, he creado git-note. Se puede utilizar como:

$ git note "Some note" # set note for current branch 
$ git note -b branch # see note for branch 
$ git note -l # list all the branches with theirs' notes 
8

me gusta hacer cometer un vacío cada vez que se crea una nueva rama, con un mensaje de confirmación diciendo lo primero que hay que decir.

git branch B A 
git checkout B 
git commit --allow-empty -m "Created branch 'B' from 'A'" 

Esto también tiene un efecto secundario maravilloso de hacer la historia se muestra en "--graph git log" mucho clearer-- saber, que muestra un tenedor claramente marcado en el árbol en el momento creé el rama, en lugar de lo que normalmente se conseguiría que es un tenedor sin etiquetar claro en algún momento posterior cuando se me ocurre hacer mi primera, mientras que comprometerse en B-- ese tipo de cosas me mantiene en una niebla constante.

+2

¿Cómo recuperas ese texto más adelante? – Yaza

2

La respuesta correcta a esto es ahora descripciones de rama, una característica que se añadió a GIT después de esta pregunta fue hecha originalmente.

Aquí hay dos SO preguntas que surgen con esta respuesta: Branch descriptions in git Can I add a message/note/comment when creating a new branch in Git?

+1

Como señalaron al menos una persona en cada uno de esos hilos de respuesta: eso no se puede empujar y, por lo tanto, es inútil para mí, de todos modos. –