Capítulo 21 de 33 9 secciones 7 min

Pedir ayuda sin quedarte esperando

Qué es un issue, cómo se escribe uno que sí contestan y cómo se cierra desde un commit

<strong>Un issue es un hilo de conversación sobre algo que hay que arreglar o decidir.</strong> Vive en GitHub, no en Git. Uno que te contesten el mismo día lleva cuatro cosas: qué hiciste, qué esperabas, qué pasó y el mensaje de error copiado tal cual. Y si en el commit que lo arregla escribes <code>Cierra #12</code>, GitHub cierra el issue solo cuando ese commit llega a la rama principal.

Los issues son la parte de GitHub que menos usa quien está empezando y la que más rápido te desatasca. Es donde se pide ayuda, se reporta que algo no funciona y se discute qué hacer 💬

Y antes de abrir uno, hay un paso que ahorra la mitad de las veces: buscar. Casi siempre alguien ya preguntó lo mismo, y en el hilo está la respuesta.

Qué es y qué no

Un issue no es solo un error. En un proyecto sano hay de tres tipos:

  • Algo está roto. El clásico.
  • Falta algo. Una función, un dato, una parte del README.
  • Una pregunta o una decisión. "¿Conviene separar el CSV por canal?" es un issue perfectamente válido.

El issue que se contesta el mismo día

Cuatro bloques. Este es el molde que uso:

Titulo: Error de codificacion al leer un CSV con tildes en Windows

## Que hice
python3 reporte.py ventas.csv

## Que esperaba
El total por ciudad

## Que paso
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 34

## Version
reporte 1.2, Windows 11, Python 3.11

Fíjate en el título: no dice "no funciona", dice qué falla y dónde. Ese título es lo que hace que la siguiente persona con el mismo problema lo encuentre en vez de abrir otro igual 🔎

El mensaje de error, copiado y no contado

Esta es la parte donde más se pierde tiempo. "Me sale un error de codificación" no sirve; el error completo sí, porque dentro está el archivo, la línea y el byte exacto.

Se copia de la terminal tal cual, y se pega entre tres tildes invertidas para que GitHub lo muestre como bloque:

mkdir reporte-ventas
cd reporte-ventas
git init -q
printf 'ciudad,monto\nLima,1200\n' > ventas.csv
git add ventas.csv
git commit -q -m "Primeras ventas de Lima"
git log --oneline
54da6e2 Primeras ventas de Lima
cat ventas-2019.csv
cat: ventas-2019.csv: No such file or directory

Eso de ahí arriba, entero, es lo que va en el issue. Los cinco segundos de copiarlo te ahorran dos días de "¿me pasas el error completo?" ⏱️

Los issues se cierran desde el commit

Esta es la parte que engancha a Git con GitHub. Si en el mensaje del commit escribes ciertas palabras seguidas del número, GitHub cierra el issue solo cuando ese commit llega a la rama principal.

EscribesQué hace
Cierra #12Cierra el issue 12 al fusionar
Fixes #12Lo mismo, en inglés
Ver #12Lo enlaza sin cerrarlo
printf 'Arequipa,890\n' >> ventas.csv
git add ventas.csv
git commit -q -m "Se agregan las ventas de Arequipa

Faltaba la ciudad en el reporte por canal.

Cierra #12"
git log -1
commit 1e64a182deb0d219b292e6391d86fa37f504bc0e
Author: Miss Yera <hola@missyera.com>
Date:   Thu Jan 15 09:00:00 2026 -0500

    Se agregan las ventas de Arequipa
    
    Faltaba la ciudad en el reporte por canal.
    
    Cierra #12

Ese cuerpo del commit, el que aprendiste a escribir en 5, es donde va la referencia. Y así el historial queda enlazado con la conversación: dentro de un año, quien lea ese commit puede llegar al hilo donde se decidió 🔗

Buscar entre los commits que cierran issues

printf 'Cusco,760\n' >> ventas.csv
git add ventas.csv
git commit -q -m "Se agregan las ventas de Cusco

Cierra #15"
git log --oneline --grep="Cierra #"
git log --grep="Cierra #12" --format="%h %s"
3fd9944 Se agregan las ventas de Cusco
1e64a18 Se agregan las ventas de Arequipa
1e64a18 Se agregan las ventas de Arequipa

Ese --grep del capítulo 6 aquí vale doble: te lleva del número del issue al cambio exacto que lo resolvió 🎯

Y una cosa de convivencia

Quien mantiene un proyecto abierto casi siempre lo hace gratis y en su tiempo libre. Un issue amable, con datos y sin urgencia fingida, se contesta. Uno que exige, no 🙂

La trampa

Una herramienta de IA que bajaste de GitHub no te funciona. Abres un issue para pedir ayuda.

Titulo: No funciona

Hola, instale todo y me sale error. Alguien sabe que puede ser?
Gracias
Qué está mal

Ese issue no se puede contestar 🤷‍♀️

Quien mantiene el proyecto no tiene tu computadora, ni tu versión, ni tu error. Con eso solo puede hacer una cosa: preguntarte todo otra vez, y ahí se van tres días de ida y vuelta.

Un issue que se contesta el mismo día trae cuatro cosas: qué hiciste, qué esperabas, qué pasó y el mensaje de error completo, copiado tal cual y no descrito. Más la versión del programa y tu sistema.

Y el título hace la mitad del trabajo. "No funciona" contra "Error de codificación al leer un CSV con tildes en Windows": el segundo lo encuentra alguien más con el mismo problema.

Comprueba que se entendió

Comprueba que lo tienes

Vas a reportar que una herramienta falla. ¿Qué es lo más importante que pongas?

  • El mensaje de error completo, copiado tal cual
  • Una descripción detallada de lo frustrante que fue
  • Una captura de pantalla de la terminal
  • Cuántas veces lo intentaste

Ejercicios

1. Reproduce un error para reportarlo

Crea el proyecto de canales y provoca un error real para tener qué copiar.

cd ..
mkdir canales
cd canales
git init -q
printf 'canal,monto\nBodegas,4200\n' > canales.csv
git add canales.csv
git commit -q -m "Ventas del canal bodegas"
git log --oneline
5d7b179 Ventas del canal bodegas
cat canales-2019.csv
cat: canales-2019.csv: No such file or directory

Eso, entero, es lo que va pegado en el issue.

2. Cierra un issue desde el commit

Arregla algo y enlázalo con el issue 7.

printf 'Horeca,3100\n' >> canales.csv
git add canales.csv
git commit -q -m "Se agrega el canal horeca

Faltaba en el reporte mensual.

Cierra #7"
git log -1 --format="%s%n%n%b"
Se agrega el canal horeca

Faltaba en el reporte mensual.

Cierra #7

Al fusionar esto en la rama principal, GitHub cierra el issue 7 solo.

3. Enlaza sin cerrar

A veces un commit avanza en un issue pero no lo termina.

printf 'Mayoristas,5600\n' >> canales.csv
git add canales.csv
git commit -q -m "Entra el canal mayorista

Primer paso de #7, falta el de farmacias."
git log -1 --format="%b"
Primer paso de #7, falta el de farmacias.

Sin la palabra "Cierra", GitHub lo enlaza y lo deja abierto.

4. Busca qué commit resolvió un issue

Del número del issue al cambio exacto.

git log --oneline --grep="#7"
6583f12 Entra el canal mayorista
43158b0 Se agrega el canal horeca

Dos commits mencionan el 7. El que lo cerró y el que avanzó en él.

5. Lista todos los cierres

Un repaso rápido de qué se cerró en este proyecto.

git log --grep="Cierra #" --format="%h %s"
43158b0 Se agrega el canal horeca

Con un proyecto de meses, esta lista es medio informe de avance 📈

6. Mira el commit entero antes de comentarlo

Cuando contestas en un issue, conviene tener delante lo que se cambió.

git show --stat HEAD
commit 6583f1222387a29de931c25a5323f09dff789888
Author: Miss Yera <hola@missyera.com>
Date:   Thu Jan 15 09:00:00 2026 -0500

    Entra el canal mayorista
    
    Primer paso de #7, falta el de farmacias.

 canales.csv | 1 +
 1 file changed, 1 insertion(+)

Qué archivos y cuántas líneas, sin leer el diff completo.

7. Comprueba tu plantilla de issue

Los proyectos serios guardan la plantilla dentro del repositorio, para que nadie tenga que acordarse.

mkdir -p .github/ISSUE_TEMPLATE
cat > .github/ISSUE_TEMPLATE/error.md <<'FIN'
## Que hice
## Que esperaba
## Que paso
## Version
FIN
git add .github
git commit -q -m "Plantilla para reportar errores"
cat .github/ISSUE_TEMPLATE/error.md
git ls-files
## Que hice
## Que esperaba
## Que paso
## Version
.github/ISSUE_TEMPLATE/error.md
canales.csv

GitHub la muestra sola al abrir un issue nuevo. Es la forma de conseguir buenos reportes sin pedirlos 📝

Lo que te llevas

Qué hiciste, qué esperabas, qué pasó y el error copiado. Y Cierra #12 en el commit para que se cierre solo.

Practica este capítulo 📓

Todo el código de arriba en un cuaderno que corre de principio a fin, y los ejercicios con una celda vacía para que los hagas tú. Se abre en Google Colab y no hay que instalar nada.

¿Tienes alguna duda o consulta?