Saltar al contenido principal
¿Has tenido alguna vez archivos llamados 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

Configuración inicial, una vez por ordenador:

Ramas

Una rama es una línea de desarrollo independiente. Se crea para trabajar en algo nuevo sin tocar la versión principal (main):
Crear una rama es instantáneo: solo es un puntero a un commit.

Conflictos

Si dos ramas cambian las mismas líneas de un archivo, Git no sabe con cuál quedarse y marca el conflicto:
Se edita el archivo dejando la versión correcta (quitando las marcas), y luego 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:
  1. Crear una rama para el cambio.
  2. Hacer commits y subirla con git push.
  3. Abrir una pull request: una petición para fusionar la rama en main.
  4. Otras personas revisan el código, comentan y se pasan las pruebas automáticas.
  5. Cuando todo está bien, se fusiona.

.gitignore

Un archivo con los patrones que Git debe ignorar: archivos compilados, dependencias descargadas, contraseñas.
Nunca se suben contraseñas ni claves: aunque se borren después, quedan en la historia.

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 pull antes de empezar a trabajar.
  • Una rama por cada funcionalidad o corrección.

Ejemplos resueltos

Ejemplo 1 · Empezar un proyecto y subirlo a GitHub

El -u deja configurado el remoto: los siguientes push y pull ya no necesitan argumentos.
git bisect hace una búsqueda binaria por la historia:
Con 1000 commits entre medias, encuentra el culpable en unos 10 pasos.
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 .gitignore y variables de entorno.
  • Hacer git push --force en 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

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.
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.
Última modificación el 12 de octubre de 2026