Curso Completo de Git
Control de versiones de cero a avanzado — demostraciones que reproduces en tu terminal.
Git es la herramienta de control de versiones que se da por supuesta en cualquier equipo de desarrollo. Este curso te lleva desde el primer repositorio hasta la colaboración en una forja y los laboratorios avanzados, con demostraciones reproducibles desde un repositorio vacío y criterios de revisión en cada unidad.
¿Qué vas a aprender?
- ✓Entender qué problema resuelve un VCS y por qué Git no es GitHub
- ✓Dominar el modelo de tres zonas: directorio de trabajo, staging y repositorio
- ✓Crear commits atómicos y leer el historial con log y diff
- ✓Trabajar con ramas, integrarlas y resolver conflictos con criterio
- ✓Sincronizar con remotos y colaborar mediante pull requests en GitHub
- ✓Recuperar trabajo con restore, revert, stash y reflog sin operaciones destructivas
- ✓Publicar versiones etiquetadas y entregar un proyecto documentado
- ✓Aplicar laboratorios avanzados: rebase, cherry-pick, bisect, worktrees, submódulos, LFS, hooks y CI/CD
Índice general del curso
Qué problema resuelve Git
Explicar qué problema resuelve un VCS, diferenciar centralizado de distribuido e identificar qué aporta Git sin confundirlo con GitHub.
- El problema de las copias manuales de archivos
- Qué es un sistema de control de versiones (VCS)
- VCS local, centralizado y distribuido
- Git frente a GitHub, GitLab y Bitbucket
- Demostración: un repositorio existe en tu equipo
Configuración inicial de Git
Configurar y comprobar la identidad que Git incluirá en los commits, distinguiendo configuración global y local.
- Instalación y comprobación de la versión
- user.name y user.email: la identidad del commit
- Configuración global frente a local por proyecto
- init.defaultBranch, editor y otras opciones
- Verificar la configuración con git config --list
Modelo mental y fundamentos locales
Crear un repositorio local, identificar el estado de sus archivos y registrar un cambio mediante un commit.
- Las tres zonas: directorio de trabajo, staging y repositorio
- git init y el directorio .git
- git status como brújula de cada tarea
- git add: preparar cambios de forma selectiva
- git commit, git log y git diff
- Estados de un archivo: untracked, modified, staged, committed
Archivos, restore y .gitignore
Gestionar renombres y eliminaciones, recuperar un archivo según su estado y excluir archivos no versionables.
- Descartar un cambio no preparado con git restore
- Deshacer un git add con restore --staged
- Renombrar y eliminar archivos: git mv y git rm
- Ignorar archivos con .gitignore
- Patrones básicos: dependencias, secretos, registros
Ramas, remotos y colaboración
Crear una rama de tarea, integrar su trabajo resolviendo un conflicto y sincronizarla con un remoto sin confundir Git con una forja.
- Qué es una rama: una referencia móvil a commits
- git switch y git branch
- Integración con git merge
- Resolución de conflictos paso a paso
- Remotos: fetch, pull y push
- Pull requests en GitHub y revisión de contribuciones
Recuperación segura
Elegir entre restore, revert, reset, stash y reflog según el estado del trabajo y el riesgo asumido.
- Orden seguro de decisión ante un error
- git revert: corregir sin reescribir el remoto
- git stash: aparcar trabajo sin confirmar
- git reset y por qué --hard es la última opción
- git reflog: recuperar una referencia perdida
Tags, versiones y entrega
Crear, verificar y publicar una versión etiquetada.
- Tags ligeros y tags anotados
- Semantic Versioning como convención
- Publicar un tag en el remoto
- Verificación con git show y git ls-remote --tags
Proyecto final colaborativo
Entregar en equipo un repositorio con una versión etiquetada y documentada, explicando el historial y las decisiones de recuperación.
- Organización del equipo y reparto de ramas
- Flujo de trabajo con pull requests en GitHub
- Documentación: README y mensajes de commit
- Rúbrica de evaluación
- Defensa del historial y de una decisión de recuperación
Laboratorio: rebase, cherry-pick y bisect
Reorganizar con seguridad el historial de una rama no publicada y localizar el commit que introdujo una regresión.
- Rebase interactivo en una rama privada
- Actualizar la base de una rama
- Ordenar y fusionar commits (squash, fixup)
- Trasplantar un commit concreto con cherry-pick
- Búsqueda binaria de regresiones con git bisect
- Automatización con bisect run
Laboratorio: worktrees, submódulos y LFS
Trabajar con varias ramas a la vez y manejar repositorios grandes o con dependencias y binarios.
- git worktree: dos ramas abiertas simultáneamente
- Submódulos: incluir otro repositorio como dependencia
- Git LFS: versionar archivos binarios grandes
- sparse-checkout y partial clone
- Mantenimiento con git maintenance
Laboratorio: hooks, seguridad y CI/CD
Diferenciar validación local, control del servidor y automatización de la forja; configurar un hook y responder a una credencial expuesta.
- Hooks locales en .git/hooks
- Validación antes del commit y del push
- Qué hacer si se publica un secreto por error
- Protección de ramas en GitHub
- Integración continua con GitHub Actions
Laboratorio: Git interno e IA
Explicar qué guarda Git realmente y tratar una propuesta de IA como una contribución que exige aislamiento, revisión y trazabilidad.
- Objetos de Git: blob, tree, commit y tag
- Inspección con git cat-file
- Cómo se almacena el repositorio
- Aislar cambios propuestos por IA en una rama
- Revisión con diffs y trazabilidad de la autoría
Proyecto Final
Integrar el itinerario troncal en un repositorio colaborativo real, evaluado con rúbrica y defendido por cada participante.
Repositorio colaborativo en equipo
Proyecto en GitHub con ramas por persona, pull requests revisadas, conflictos resueltos y una versión etiquetada.
Rescate de un repositorio en mal estado
Partir de un repositorio con historial desordenado y errores publicados, y sanearlo sin operaciones destructivas.
Flujo de trabajo documentado para un equipo
Definir y demostrar la estrategia de ramas, la política de revisión y la automatización de CI de un equipo.
¿Quieres seguir formándote?
Descubre todos los cursos de SASE Formación.