Git: aprende control de versiones con práctica guiada
Git es una herramienta esencial para desarrollo de software, DevOps, SRE, automatización, documentación técnica y trabajo colaborativo. Permite guardar cambios, comparar versiones, crear ramas, trabajar con equipos y conectar tu repositorio local con plataformas como GitHub o GitLab.
¿Qué es Git y por qué es importante?
Git registra el historial de cambios de un proyecto. Cada commit funciona como un punto de control que ayuda a revisar qué cambió, quién lo cambió y por qué. Con ramas puedes crear nuevas funcionalidades sin afectar la versión principal. Con remotos puedes sincronizar el trabajo con servidores como GitHub, GitLab, Bitbucket o repositorios internos de una empresa.
1. Control
Conserva el historial, permite volver a versiones anteriores y reduce el riesgo de perder trabajo.
2. Colaboración
Permite trabajar con ramas, revisiones, Pull Requests, Merge Requests y colaboración en equipo.
3. Automatización
Es la base para CI/CD, despliegues, auditoría técnica y prácticas DevOps modernas.
Emulador interactivo de Git
Practica comandos en un entorno seguro de aprendizaje. El emulador muestra la terminal, el resultado de salida, el canvas visual y la explicación textual de lo que ocurre en cada paso.
40 comandos de Git explicados
Usa esta tabla como guía rápida. Cada comando se puede copiar y pegar en el emulador para practicar el flujo de trabajo de Git paso a paso.
| # | Comando | Qué hace | Cuándo usarlo | Copiar |
|---|---|---|---|---|
| 1 | git --version | Verifica la versión instalada de Git. | Confirmar que Git está instalado antes de iniciar. | |
| 2 | git config --global user.name "Tu Nombre" | Configura el nombre global del usuario de Git. | Configuración inicial del equipo de trabajo. | |
| 3 | git config --global user.email "correo@dominio.com" | Configura el correo global del usuario de Git. | Asociar los commits con tu identidad. | |
| 4 | git config --list | Muestra la configuración activa de Git. | Revisar usuario, correo y ajustes. | |
| 5 | git init | Crea un repositorio Git en la carpeta actual. | Iniciar control de versiones local. | |
| 6 | git clone https://github.com/usuario/proyecto.git | Descarga una copia completa de un repositorio remoto. | Trabajar en un proyecto existente. | |
| 7 | git status | Muestra archivos modificados, nuevos o preparados. | Revisar el estado antes de hacer commit. | |
| 8 | git add file.txt | Agrega un archivo específico al área de preparación. | Preparar un cambio puntual. | |
| 9 | git add . | Agrega todos los cambios del directorio actual. | Preparar todos los cambios locales. | |
| 10 | git restore file.txt | Descarta cambios no preparados en un archivo. | Revertir ediciones locales no deseadas. | |
| 11 | git restore --staged file.txt | Quita un archivo del área de preparación sin borrar los cambios. | Corregir lo que estaba por confirmarse. | |
| 12 | git commit -m "Mensaje claro del cambio" | Registra los cambios preparados en el historial. | Guardar una unidad lógica de trabajo. | |
| 13 | git commit --amend -m "Nuevo mensaje" | Actualiza el último commit local. | Corregir un mensaje o incluir un archivo olvidado. | |
| 14 | git log --oneline | Muestra el historial compacto de commits. | Revisar rápidamente la línea de tiempo. | |
| 15 | git log --graph --oneline --decorate --all | Muestra el historial con ramas y referencias. | Entender visualmente ramas y merges. | |
| 16 | git diff | Muestra diferencias no preparadas. | Revisar cambios antes de usar git add. | |
| 17 | git diff --staged | Muestra diferencias ya preparadas. | Validar lo que entrará al commit. | |
| 18 | git branch | Lista las ramas locales. | Saber en qué rama estás trabajando. | |
| 19 | git branch feature/login | Crea una nueva rama sin cambiarte a ella. | Preparar una línea de trabajo paralela. | |
| 20 | git checkout -b feature/login | Crea una rama y cambia a ella. | Iniciar una nueva funcionalidad. | |
| 21 | git switch main | Cambia a la rama main. | Regresar a la rama principal. | |
| 22 | git switch -c feature/api | Crea y cambia a una rama usando sintaxis moderna. | Alternativa moderna a checkout -b. | |
| 23 | git merge feature/login | Integra una rama dentro de la rama actual. | Unir cambios ya validados. | |
| 24 | git merge --abort | Cancela un merge con conflictos. | Volver al estado previo al merge. | |
| 25 | git rebase main | Reaplica los commits de la rama actual sobre main. | Mantener un historial lineal antes de integrar. | |
| 26 | git rebase --abort | Cancela un rebase en progreso. | Salir de un rebase problemático. | |
| 27 | git remote -v | Muestra los repositorios remotos configurados. | Verificar origin u otras URLs remotas. | |
| 28 | git remote add origin https://github.com/usuario/proyecto.git | Agrega un repositorio remoto llamado origin. | Conectar un proyecto local con un servidor remoto. | |
| 29 | git fetch origin | Descarga referencias remotas sin mezclar cambios. | Actualizar información antes de decidir. | |
| 30 | git pull origin main | Descarga e integra cambios remotos de main. | Actualizar tu rama local. | |
| 31 | git push origin main | Envía commits locales a main remoto. | Publicar cambios confirmados. | |
| 32 | git push -u origin feature/login | Publica una rama y configura el seguimiento upstream. | Primera subida de una rama nueva. | |
| 33 | git stash | Guarda cambios temporalmente sin hacer commit. | Cambiar de rama sin perder trabajo. | |
| 34 | git stash list | Lista los cambios guardados temporalmente. | Revisar stashes disponibles. | |
| 35 | git stash pop | Restaura el último stash y lo elimina de la lista. | Continuar trabajo pausado. | |
| 36 | git tag v1.0.0 | Crea una etiqueta local. | Marcar una versión importante. | |
| 37 | git push origin v1.0.0 | Publica una etiqueta en el remoto. | Compartir una versión liberada. | |
| 38 | git reset --soft HEAD~1 | Deshace el último commit conservando los cambios preparados. | Reorganizar un commit reciente. | |
| 39 | git reset --hard HEAD~1 | Elimina el último commit y sus cambios locales. | Usar solo con seguridad; elimina cambios. | |
| 40 | git cherry-pick abc1234 | Aplica un commit específico en la rama actual. | Mover un cambio puntual entre ramas. |
status, add, commit, branch,
merge, pull y push. Después avanza con rebase,
stash, tag, reset y cherry-pick.