Mensajes de commit en Git


Lección 50 / 53

Mensajes de commit en Git

Git Guía Git Guía Git español

Si bien a lo largo del tiempo se han identificado una serie de indicaciones relacionadas con el uso de ramas y estrategias de fusión con "git workflow", no debemos olvidar que las estrategias y convenciones vinculadas al uso de mensajes de commit también contribuyen a un uso productivo de Git y el uso de etiquetas para el control de versiones. Incluso en este aspecto, Git no es prescriptivo, dejando que cada uno elija la forma más adecuada.

Mensajes de commit en Git

En lo que respecta a los mensajes de commit, es importante recordar que Git permite insertar un mensaje de commit de varias líneas y luego usar la primera línea del mensaje como "asunto" (a partir de este punto, la diferencia entre git log y git log --oneline).

Un mensaje de commit para agregar esta sección podría verse así:

Add commit message section in workflow chapter

More specific info about how to write a commit message and some
guidelines about why it is important to keep them consistent.

We opted to suggest the following:

- use short first line as summary (less than 72 chars, 50 is best)
- wrap body lines to 72 chars (useful to read log on terminal)
- use imperative form for first summary line: "Fix bug", not "Fixed
  bug" or "Fixes bug"
- do the best to format body part to make it readable
- use body part to describe how and why for the commit, as well as
  references to other commits, issues, ...
- think if, in 6 months, you'll be able to understand the change just
  reading the commit message ;-)

Complete and close issue #12 

En resumen:

  • la primera línea del mensaje es la más importante
  • las otras líneas se pueden usar para aclarar referencias, razones y limitaciones relacionadas con los cambios guardados en el commit, que tal vez no fue necesario o posible agregar directamente en los archivos de proyecto modificados
  • es útil ajustarse a un estilo común y consistente de saber qué y cómo encontrar información en los mensajes de commit

Una convención sobre los mensajes de commit que se comparte bastante en el mundo del desarrollo es la que toma el nombre de Conventional Commit (o Semantic Commit). Esta convención indica algunas reglas simples para crear un historial de commit explícito (¿qué tipo de modificación hice con ese commit?) e interpretable por scripts/automatizaciones.

Un mensaje de commit en línea con la especificación de Conventional Commit se estructura de la siguiente forma:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

y las siguientes reglas:

  • el <type> tiene que ser fix para aquellos commit que corrigen un bug
  • el <type> tiene que ser feat si elcommit introduce una nueva función
  • <type> diferentes fix y feat están permitidos, sugiriendo algunos (build, chore, ci, docs, style, refactor, perf, test), pero dejando también al team definir eventualmente lo suyos
  • si el commit introduce breaking change, estos deben señalarse comenzando el footer con BREAKING CHANGE: o añadiendo ! después del type/scope en la primera línea.

Si quisiéramos reescribir el mensaje de commit del ejemplo anterior con estas pautas, podremos, por ejemplo, tener algo como lo siguiente:

feat(workflows): add commit messages section

More specific info about how to write a commit message and some
guidelines about why it is important to keep them consistent.

- basic sane guidelines for commit messages
- reference to conventional commit guidelines

Refs: #2472
Reviewed-by: myself

La elección de los alcances y otras partes opcionales de las convenciones obviamente se deja al equipo, que puede ajustarse según sus necesidades.

Para obtener más información, consulte el sitio web de ConventionalCommits.

Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad