trabajo_final.docx, trabajo_final_v2.docx y trabajo_final_ahora_si.docx? Git resuelve eso para el código: guarda la historia completa de un proyecto, permite volver a cualquier versión anterior, trabajar en varias ideas a la vez sin mezclarlas y colaborar con otras personas sin pisarse. Es la herramienta que usan prácticamente todos los equipos de software del mundo, y GitHub es el sitio más usado para alojar los proyectos.
Lo que vas a aprender
- Qué es el control de versiones y cómo organiza Git los cambios.
- Los comandos básicos para guardar versiones.
- Qué son las ramas y cómo se fusionan.
- Cómo resolver un conflicto.
- Cómo trabajar con un repositorio remoto y con pull requests.
- Cómo deshacer cambios sin perder trabajo.
Fundamentos
Las tres zonas
Un commit es una foto del proyecto en un momento, con un mensaje, un autor, una fecha y un identificador único (hash, como
a3f9c21). Cada commit apunta al anterior: la historia es una cadena.
Comandos básicos
Ramas
Una rama es una línea de desarrollo independiente. Se crea para trabajar en algo nuevo sin tocar la versión principal (main):
Conflictos
Si dos ramas cambian las mismas líneas de un archivo, Git no sabe con cuál quedarse y marca el conflicto:git add archivo y git commit. Si se quiere abandonar: git merge --abort.
Repositorios remotos
origin es el nombre por defecto del remoto del que se clonó.
Pull requests
En GitHub (o GitLab), el flujo habitual de un equipo es:- Crear una rama para el cambio.
- Hacer commits y subirla con
git push. - Abrir una pull request: una petición para fusionar la rama en
main. - Otras personas revisan el código, comentan y se pasan las pruebas automáticas.
- Cuando todo está bien, se fusiona.
.gitignore
Un archivo con los patrones que Git debe ignorar: archivos compilados, dependencias descargadas, contraseñas.Deshacer cambios
Regla de oro: no reescribas la historia que ya has compartido (
reset, --amend, rebase sobre commits subidos). Usa revert.
Buenas prácticas
- Commits pequeños y con un solo propósito.
- Mensajes que digan qué y por qué: “Corrige el cálculo del IVA en facturas con descuento”, no “cambios”.
- Haz
git pullantes de empezar a trabajar. - Una rama por cada funcionalidad o corrección.
Ejemplos resueltos
Ejemplo 1 · Empezar un proyecto y subirlo a GitHub
Ejemplo 1 · Empezar un proyecto y subirlo a GitHub
-u deja configurado el remoto: los siguientes push y pull ya no necesitan argumentos.Ejemplo 2 · Encontrar qué commit rompió algo
Ejemplo 2 · Encontrar qué commit rompió algo
git bisect hace una búsqueda binaria por la historia:Ejemplo 3 · Me he equivocado de rama
Ejemplo 3 · Me he equivocado de rama
Has hecho cambios en
main que deberían ir en una rama nueva, pero aún no has hecho commit:Errores frecuentes
- Subir contraseñas o claves al repositorio. Usa
.gitignorey variables de entorno. - Hacer
git push --forceen una rama compartida: borra el trabajo de otros. - Commits enormes con mensajes vacíos. Dificultan entender y deshacer los cambios.
- Trabajar siempre en
main. Con ramas se puede experimentar sin romper la versión buena. - Subir archivos generados (compilados, dependencias): ocupan mucho y dan conflictos constantes.
Preguntas frecuentes
¿Git y GitHub son lo mismo?
¿Git y GitHub son lo mismo?
No. Git es el programa de control de versiones, que funciona en tu ordenador sin conexión. GitHub (y GitLab, Bitbucket) es un servicio web que aloja repositorios de Git y añade colaboración: pull requests, revisiones, incidencias y automatización.
¿Sirve para algo que no sea código?
¿Sirve para algo que no sea código?
Para cualquier archivo de texto: documentación, apuntes en Markdown, artículos en LaTeX, configuraciones. Estos mismos apuntes se escriben en archivos de texto y se gestionan con Git y GitHub. Con archivos binarios grandes (vídeos, Word) funciona peor, porque no puede mostrar ni fusionar las diferencias.
Temas relacionados
Fundamentos de Python
Tu primer proyecto para versionar.
Expresiones regulares
Otra herramienta del día a día.
Búsqueda binaria
La idea detrás de git bisect.