Capítulo 7 — Git y control de versiones¶
¿Qué es Git?¶
Git es un sistema de control de versiones distribuido. Guarda un historial de todos los cambios de un proyecto y permite volver atrás, trabajar en paralelo con otras personas y fusionar contribuciones sin pisarse.
Git vs GitHub
Git es la herramienta que corre en tu ordenador. GitHub (o GitLab, Bitbucket…) es un servicio en la nube donde alojas tus repositorios Git. Puedes usar Git sin GitHub, pero no al revés.
Conceptos clave¶
| Concepto | Qué es |
|---|---|
| Repositorio | Carpeta con historial de cambios (.git/) |
| Commit | Una "foto" del proyecto en un momento dado |
| Rama (branch) | Línea de desarrollo independiente |
| Remote | Repositorio remoto (ej. GitHub) |
| Merge | Fusionar una rama con otra |
| Pull request | Propuesta de fusionar cambios en GitHub |
Configuración inicial¶
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
git config --global init.defaultBranch main
Flujo básico¶
Crear un repositorio¶
git init
Ver el estado¶
git status
Añadir cambios al "stage"¶
git add archivo.txt
git add . # todo
Confirmar los cambios¶
git commit -m "Mensaje descriptivo"
Ver el historial¶
git log --oneline
git log --graph --oneline --all
Subir a GitHub¶
git remote add origin https://github.com/usuario/repo.git
git push -u origin main
Ramas¶
git branch # listar ramas
git checkout -b nueva-rama # crear y cambiar
git switch nueva-rama # cambiar (moderno)
git merge nueva-rama # fusionar en la actual
git branch -d nueva-rama # borrar
Trabajar con repos existentes¶
git clone https://github.com/usuario/repo.git
git pull # traer cambios del remoto
git fetch # traer sin fusionar
Buenas prácticas¶
- Commits pequeños y atómicos: un cambio lógico por commit.
- Mensajes claros:
feat: añadir login,fix: corregir typo en header. - Conventional Commits: usa prefijos (
feat,fix,docs,chore,refactor,test). - Ramas con nombres descriptivos:
feature/login,fix/menu-movil. - Nunca subas secretos:
.env, claves API, contraseñas.
Cuidado con git push --force
Reescribe el historial remoto. Si otras personas están trabajando en la misma rama, puedes causarles conflictos graves. Úsalo solo en tus ramas personales.
Ejercicios¶
- Crea un repositorio nuevo en GitHub y súbelo desde tu ordenador.
- Crea una rama, haz un cambio, fusiónala con
main. - Practica
git log --graph --oneline --allpara visualizar el historial. - Añade un
.gitignoreque excluyanode_modules/y.env.
⬅ Capítulo 6 — Formularios HTML | ➡ Capítulo 8 — Consumo de APIs