Saltar al contenido
git-y-commits.en · devschool

Git y commits: vocabulario y mensajes en inglés

Lección 12 de 23 · 13 min de lectura · Actualizado el

En esta lección
  1. El vocabulario esencial
  2. Los comandos y cómo se leen
  3. Leer los mensajes de Git
  4. Cómo escribir un buen mensaje de commit
  5. Un flujo de trabajo en inglés
  6. Errores frecuentes
  7. Resumen

Git y GitHub son el lugar donde más inglés vas a escribir al programar. Los comandos son palabras inglesas (commit, push, merge), los mensajes que devuelve Git son frases inglesas y los commits que escribas serán leídos por otras personas. En esta lección aprenderás el vocabulario esencial, a leer los mensajes de Git y a escribir buenos mensajes de commit con la convención más extendida, Conventional Commits. Todas las salidas de Git que ves aquí son reales.

Si todavía no usas Git, no te preocupes: aquí aprendes los términos; la parte práctica del control de versiones la vas a poder aplicar con cualquier tutorial.

El vocabulario esencial

InglésPronunciaciónSignificadoEjemplo
repository (repo)/ripósitori/, /rípo/repositorio: carpeta de proyecto con su historiala repo on GitHub
commit/komít/instantánea guardada del proyecto (sustantivo y verbo)make a commit
branch/branch/rama: línea de trabajo paralelafeature/login
main / master/mein/, /máster/la rama principalgit switch main
merge/merdy/fusionar ramasmerge a branch
clone/clóun/clonar: copiar un repo remotogit clone
fork/fork/bifurcar: copia propia de un repo ajenofork the project
pull/pul/traer cambios del remotogit pull
push/push/subir cambios al remotogit push
fetch/fech/descargar cambios sin aplicarlosgit fetch
remote/rimóut/remoto: el repo en el servidororigin
origin/óridyin/nombre habitual del remotoorigin/main
pull request (PR)/pul rikuést/petición para integrar tus cambiosopen a PR
issue/íshiu/incidencia o tarea en GitHubopen an issue
conflict/cónflikt/choque entre cambiosmerge conflict
stage / staged/steich/, /steichd/preparar / preparado para el commitstaged changes
working directory/uérking dairéktori/tu carpeta de trabajoworking tree
HEAD/jed/el commit en el que estás ahoraHEAD~1
tag/tag/etiqueta: marca una versiónv1.0.0
diff/dif/diferencias entre dos versionesgit diff
log/log/historial de commitsgit log
revert/rivért/deshacer un commit creando otrogit revert
reset/riset/mover la rama a un commit anteriorgit reset
stash/stash/guardar cambios a un lado temporalmentegit stash
rebase/ribéis/reaplicar tus commits sobre otra basegit rebase
squash/scuásh/aplastar varios commits en unosquash commits
cherry-pick/chéri pik/copiar un commit concretogit cherry-pick
ignore/ignór/ignorar archivos.gitignore

Un truco: el verbo commit significa “comprometerse” y por eso el commit es el compromiso de guardar un estado. Se usa como verbo (“I committed the change”, /ai komítid/) y como sustantivo (“a small commit”).

Los comandos y cómo se leen

Cada comando es una frase en imperativo: git <verbo>. Léelos así:

ComandoSe leeQué hace
git initgit initCrea un repositorio nuevo
git clone <url>git cloneCopia un repositorio remoto
git statusgit statusMuestra el estado actual
git add .git add dotPrepara (stage) los cambios
git commit -m "..."git commit dash mGuarda los cambios con un mensaje
git pushgit pushSube los commits al remoto
git pullgit pullTrae y fusiona cambios del remoto
git switch -c namegit switch dash c nameCrea y cambia a una rama
git merge namegit merge nameFusiona una rama en la actual
git log --onelinegit log dash dash onelineHistorial resumido

El flag -m significa message (mensaje). El flag --oneline es “en una línea”.

Leer los mensajes de Git

Git responde con frases en inglés llenas de vocabulario que ya conoces. Estos son resultados reales.

git status

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	a.txt

nothing added to commit but untracked files present (use "git add" to track)
FraseTraducción
On branch mainEstás en la rama main
No commits yetAún no hay commits
Untracked filesArchivos sin seguimiento (Git no los conoce)
use "git add <file>..." to include in what will be committedusa git add para incluirlos en lo que se guardará
nothing added to commitno hay nada añadido para guardar

Después de git add a.txt, el estado cambia:

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   a.txt

“Cambios que se van a guardar… (usa git rm --cached para quitarlos de la zona de preparación). Archivo nuevo: a.txt”. Unstage (/anstéich/) es quitar algo de la zona de preparación.

Estados que verás en git status: modified (modificado), new file (archivo nuevo), deleted (borrado), renamed (renombrado), untracked (sin seguimiento), staged (preparado), unstaged (no preparado).

El historial

$ git log --oneline
53b5c24 feat: add greeting file

Cada línea es un commit: una hash (/jash/, código identificador, 53b5c24) y su mensaje.

Conflictos de fusión

Un merge conflict ocurre cuando dos ramas cambian la misma parte de un archivo. Este es el resultado real al fusionar:

Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.

“Fusionando automáticamente a.txt. CONFLICTO (de contenido): conflicto de fusión en a.txt. La fusión automática ha fallado; arregla los conflictos y luego haz commit del resultado.”

Y el archivo queda marcado así:

hello
<<<<<<< HEAD
main change
=======
login
>>>>>>> feature/login

Lee las marcas: entre <<<<<<< HEAD y ======= está tu versión (la rama actual, current), y entre ======= y >>>>>>> feature/login está la versión entrante (incoming). Tú decides con cuál quedarte, borras las marcas y haces git add y git commit.

Si intentas hacer commit sin resolverlos:

error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.

“Error: no se puede hacer commit porque hay archivos sin fusionar. Pista: arréglalos en el árbol de trabajo y luego usa git add/rm…”. La palabra hint (/jint/) significa “pista”.

Otros mensajes típicos

MensajeTraducciónQué hacer
fatal: No configured push destination.no hay destino configurado para pushAñade un remoto con git remote add origin ...
error: pathspec 'nada' did not match any file(s) known to gitnada no coincide con ningún archivo conocidoRevisa el nombre de la rama o archivo
Your branch is ahead of 'origin/main' by 2 commits.tu rama va 2 commits por delanteHaz git push
Your branch is behind 'origin/main'tu rama va por detrásHaz git pull
rejected ... (non-fast-forward)rechazado: el remoto tiene cambios que no tienesHaz git pull antes
Permission denied (publickey)permiso denegado: falla la clave SSHConfigura tu clave SSH

Cómo escribir un buen mensaje de commit

Un commit message (/komít mésech/) explica qué cambia y, si hace falta, por qué. Piensa que alguien lo leerá dentro de un año para entender el historial.

La regla del imperativo

El mensaje se escribe en imperativo, como si dieras una orden: “Add login page”, no “Added login page” ni “Adds login page”. Un truco: la frase debe completar “If applied, this commit will…” (si se aplica, este commit…).

Bien (imperativo)Mal
Add login pageAdded login page
Fix crash on empty cartFixes crash on empty cart
Remove unused importsRemoving unused imports
Update READMEREADME updated
Rename variable for clarityRenamed variable

Más reglas:

  1. Corto: unos 50 caracteres como máximo en la primera línea (el subject).
  2. Sin punto final.
  3. Con mayúscula inicial (o minúscula si usas Conventional Commits).
  4. Concreto: di qué cambiaste, no “fix stuff” ni “update”.
  5. Un cambio por commit.

Si necesitas más detalle, añade una línea en blanco y un párrafo (el body) explicando el por qué:

Fix crash on empty cart

The total was calculated with reduce() without an initial value,
which throws an error when the cart has no items.

Traducción: “Arregla el fallo con el carrito vacío. El total se calculaba con reduce() sin valor inicial, lo que lanza un error cuando el carrito no tiene artículos”.

Conventional Commits

Conventional Commits (/konvénshonal komíts/, “commits convencionales”) es una norma muy extendida: el mensaje empieza con un tipo, un ámbito opcional y la descripción.

<type>(<scope>): <description>
TipoSe usa paraEjemplo
featuna nueva funcionalidad (feature)feat: add dark mode
fixcorregir un bugfix: prevent crash on empty cart
docscambios en documentacióndocs: update installation steps
styleformato, sin cambiar la lógicastyle: format code with Prettier
refactorreorganizar sin cambiar el comportamientorefactor: simplify price calculation
testañadir o mejorar teststest: add tests for login
choretareas de mantenimientochore: update dependencies
perfmejorar el rendimientoperf: cache search results
buildcambios en la compilaciónbuild: add Docker image
ciintegración continuaci: run tests on pull requests
revertrevertir un cambiorevert: remove dark mode

El scope (/skóup/, ámbito) va entre paréntesis e indica la parte afectada:

feat(auth): add login page
fix(cart): handle empty list
docs(readme): add usage section

Un cambio que rompe compatibilidad se marca con !:

feat(api)!: remove the old /users endpoint

Aquí ! indica un breaking change (cambio que rompe lo anterior).

Malos y buenos mensajes

MalPor quéMejor
updateNo dice quéfix: correct VAT calculation
fixed bugNi cuál ni dóndefix(login): show error on wrong password
changesVacíorefactor: split utils into modules
WIP“Work in progress”: no sirve en el historialfeat: add search form (first version)
asdfSin sentidodocs: add contributing guide
Fixed the thing where the menu doesn't open on phone when you click twiceDemasiado largofix(menu): open on first tap on mobile

Un flujo de trabajo en inglés

Así se cuenta una jornada típica con Git, con las frases que usarás en un equipo:

  1. “I pulled the latest changes from main.” (Traje los últimos cambios.)
  2. “I created a branch called feature/search.” (Creé una rama.)
  3. “I committed my changes and pushed the branch.” (Hice commit y subí la rama.)
  4. “I opened a pull request.” (Abrí una pull request.)
  5. “A teammate reviewed it and requested changes.” (Un compañero la revisó y pidió cambios.)
  6. “I fixed the comments and pushed again.” (Arreglé los comentarios y volví a subir.)
  7. “They approved it and merged it into main.” (La aprobaron y la fusionaron.)

Y en los comentarios de una revisión (code review):

FraseSignificado
Looks good to me / LGTMMe parece bien
Nit: ...Detalle menor
Could you add a test?¿Podrías añadir un test?
Can we rename this variable?¿Podemos renombrar esta variable?
Thanks for the PR!¡Gracias por la PR!
Please rebase on main.Haz rebase sobre main, por favor
ApprovedAprobado
Request changesPedir cambios

Consejo: desde la primera práctica, escribe tus commits en inglés y en imperativo, aunque el proyecto sea personal. Es una de las formas más rápidas de coger fluidez, y tu historial queda profesional para tu portfolio.

Errores frecuentes

  • Escribir Added, Fixed o Updated en pasado. Usa el imperativo: Add, Fix, Update.
  • Mensajes vagos como update, fix, changes o asdf. No dicen qué pasó. Describe el cambio.
  • Confundir fetch y pull. fetch descarga sin tocar tu trabajo; pull descarga y además fusiona.
  • Confundir fork y clone. fork crea tu propia copia en GitHub; clone la trae a tu ordenador.
  • Meter varios cambios no relacionados en un commit. Divídelos: cada commit, una idea.
  • Pronunciar git como “yit”. Se dice /guit/, con g dura (como en “guitarra”). Y GitHub es /guit jab/.
  • Resolver un conflicto sin quitar las marcas <<<<<<<. Si quedan en el archivo, el código no funcionará.

Resumen

ConceptoInglésQué recordar
GuardarcommitImperativo, corto, concreto
Subir / bajarpush / pullgit push, git pull
Ramasbranch / mergeRama paralela y fusión
Colaborarfork / pull requestCopia propia y petición de integración
ProblemasconflictMarcas <<<<<<<, =======, >>>>>>>
Prepararstage / stagedZona previa al commit
FormatoConventional Commitstype(scope): description
Tiposfeat, fix, docs, refactor, test, choreLos más usados

Para practicar con un proyecto real, repasa Comentarios y README. Siguiente lección: Vocabulario web, con las palabras de HTML, CSS y desarrollo web.

Pon a prueba lo que has aprendido

[Inglés] ¿Qué mensaje de commit sigue la convención de imperativo?

[Inglés] ¿Qué significa este mensaje de commit?
feat(auth): add login page

[Inglés] ¿Qué es un fork?

[Inglés] Git muestra Automatic merge failed; fix conflicts and then commit the result. ¿Qué debes hacer?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.