Git tiene cientos de comandos y opciones, pero en el día a día trabajas con un grupo mucho más pequeño. Aquí tienes los comandos de Git más utilizados organizados por lo que realmente necesitas hacer: empezar un proyecto, guardar cambios, trabajar con ramas, deshacer errores y sincronizar con un repositorio remoto como GitHub o GitLab.
Al final tienes una chuleta descargable con todos los comandos juntos, para tenerla a mano sin volver a este artículo cada vez.
Configuración inicial
Antes de tu primer commit, Git necesita saber quién eres. Se configura una sola vez por equipo:
git config --global user.name "Tu nombre": define el nombre que aparecerá en tus commits.git config --global user.email "tu@email.com": define el email asociado, debe coincidir con el de tu cuenta de GitHub/GitLab para que los commits se vinculen a tu perfil.git config --list: muestra toda la configuración actual, útil para comprobar que se ha guardado bien.
Comandos básicos: crear y guardar cambios
git init: convierte la carpeta actual en un repositorio Git nuevo.git clone [url]: descarga una copia completa de un repositorio remoto existente a tu ordenador.git status: muestra qué archivos han cambiado y en qué estado están (sin seguimiento, modificados, listos para commit). El comando que más vas a usar, sin comparación.git add [archivo]: prepara un archivo para el próximo commit. Usagit add .para añadir todos los cambios de la carpeta actual.git commit -m "mensaje": guarda los cambios preparados como un punto fijo en el historial, con un mensaje que describe qué has hecho.git diff: muestra línea a línea qué ha cambiado exactamente en los archivos modificados antes de añadirlos.git log: muestra el historial de commits del proyecto, con autor, fecha y mensaje.
Escribe mensajes de commit que expliquen el «por qué», no solo el «qué». «Arreglado bug» dice poco; «corrige el cálculo de IVA cuando el carrito está vacío» te va a salvar cuando revises el historial dentro de seis meses.
Trabajar con ramas (branches)
Las ramas te permiten trabajar en una funcionalidad nueva sin tocar la versión estable del proyecto:
git branch: lista las ramas del repositorio y marca en cuál estás.git branch [nombre]: crea una rama nueva sin moverte a ella todavía.git switch [nombre]: cambia a otra rama existente (comando moderno, sustituye agit checkoutpara este uso).git switch -c [nombre]: crea una rama nueva y cambia a ella en un solo paso.git merge [rama]: fusiona los cambios de la rama indicada en la rama en la que estás.git branch -d [nombre]: elimina una rama ya fusionada. Usa-Dmayúscula para forzar el borrado si aún no se ha fusionado.
Deshacer cambios sin entrar en pánico
Esta es la sección que más ansiedad genera a quien empieza. Aquí tienes qué comando usar según el momento exacto en el que estés:
git restore [archivo]: descarta los cambios de un archivo que todavía no has añadido conadd, volviendo a la última versión guardada.git restore --staged [archivo]: saca un archivo del área de preparación sin perder los cambios, por si lo añadiste por error.git commit --amend: modifica el último commit (mensaje o contenido) en vez de crear uno nuevo. Solo úsalo si aún no lo has subido al remoto.git revert [commit]: crea un commit nuevo que deshace los cambios de un commit anterior, sin borrar el historial. La opción más segura en un proyecto compartido.git reset --hard [commit]: vuelve el repositorio exactamente al estado de ese commit, descartando todo lo posterior. Es destructivo: no lo uses en una rama que otros ya han descargado.git stash: guarda tus cambios sin confirmar en un cajón aparte, dejando la carpeta limpia. Útil cuando necesitas cambiar de rama a mitad de una tarea. Recupéralos congit stash pop.
Trabajar con un repositorio remoto
git remote -v: muestra a qué repositorio remoto está conectado tu proyecto.git remote add origin [url]: conecta un repositorio local recién creado a un remoto vacío en GitHub/GitLab.git push origin [rama]: sube tus commits locales al repositorio remoto.git pull: descarga y fusiona los cambios del remoto en tu rama actual, en un solo paso.git fetch: descarga los cambios del remoto sin fusionarlos todavía, útil para revisar antes de mezclar.
Comandos avanzados que vale la pena conocer
git log --oneline --graph: visualiza el historial de commits y ramas de forma compacta, muy útil para entender un proyecto con varias ramas activas.git blame [archivo]: muestra quién modificó cada línea de un archivo y en qué commit, práctico para entender por qué existe un código concreto.git cherry-pick [commit]: aplica un commit concreto de otra rama sin fusionar toda la rama.git rebase -i [commit]: reescribe el historial de commits de forma interactiva (unir, reordenar, editar mensajes) antes de compartirlo. Solo en ramas que aún no has subido, o que solo usas tú.git tag [nombre]: marca un commit concreto como un punto de referencia, típicamente una versión publicada (v1.0).
Tip: si trabajas con Visual Studio Code, activa el panel de «Control de código fuente» integrado (icono de la barra lateral) para ver el estado de Git sin salir del editor. Combínalo con la extensión GitLens que menciono en mi guía de Visual Studio Code.
Chuleta descargable
Aquí hay una hoja de trucos de los comandos de Git que puedes utilizar como referencia diaria:

Descarga la Hoja de trucos de los comandos de Git
Preguntas frecuentes
¿Cuál es la diferencia entre git pull y git fetch?
git fetch descarga los cambios del remoto pero no los aplica a tu rama; git pull hace lo mismo y además los fusiona automáticamente.
¿Cómo deshago el último commit sin perder los cambios?
Usa git reset --soft HEAD~1: elimina el último commit del historial pero mantiene los cambios en el área de preparación, listos para volver a confirmarlos.
¿git checkout y git switch son lo mismo?
git checkout es el comando clásico, con muchos usos distintos (cambiar de rama, restaurar archivos). git switch y git restore son comandos más recientes que separan esas dos funciones para que sea más difícil confundirse.
¿Qué hago si git reset –hard borró algo que necesitaba?
Prueba git reflog: guarda un historial de casi todos los movimientos de HEAD, incluidos los commits «perdidos», y normalmente te permite recuperarlos.
Guarda esta página en marcadores: entre status, add, commit, push y pull vas a cubrir el 80% de tu trabajo diario con Git. El resto de comandos, ve incorporándolos cuando te encuentres realmente con la necesidad, no antes.


