HER · Herramienta Herramientas

46.Git

Sistema de control de versiones que guarda el historial de cambios de un proyecto, permite volver atrás y facilita trabajar en equipo.

¿Qué es?

Git es un sistema de control de versiones: guarda «fotos» (commits) de tu proyecto cada vez que tú se lo pides, con un mensaje de qué cambió. Así puedes ver el historial, comparar versiones, volver a una que funcionaba y trabajar en equipo sin sobrescribir el trabajo de otros. Lo creó Linus Torvalds en 2005 y es gratuito.

Sin Git, los proyectos terminan así: tarea_final.py, tarea_final2.py, tarea_final_AHORA_SI.py. Con Git hay un solo archivo y un historial ordenado de todas sus versiones.

Conceptos clave

Concepto Qué es
Repositorio La carpeta del proyecto con su historial (carpeta oculta .git)
Commit Una foto del proyecto con mensaje, autor y fecha
Área de preparación (staging) Donde eliges qué cambios entran en el próximo commit
Rama (branch) Una línea de trabajo paralela (main, nueva-funcion)
Remoto Copia del repositorio en un servidor como GitHub o GitLab

Sintaxis (pseudocódigo / Python)

Configuración (una sola vez por computadora)

git config --global user.name "Ana López"
git config --global user.email "ana@ejemplo.com"
git config --global init.defaultBranch main

El ciclo de trabajo

git init                     ← convertir la carpeta en repositorio (una vez)
git status                   ← ¿qué cambió?
git add archivo.py           ← preparar un archivo  (git add . = todos)
git commit -m "Agrega cálculo del promedio"
git log --oneline            ← ver el historial
 modificas  →  git add  →  git commit
 (trabajo)     (staging)    (historial)

Más comandos útiles

Para… Comando
Ver qué cambió exactamente git diff
Quitar un archivo del staging git restore --staged archivo.py
Descartar cambios no guardados de un archivo git restore archivo.py
Crear una rama y cambiarte a ella git switch -c nueva-funcion
Volver a main git switch main
Unir una rama a la actual git merge nueva-funcion
Copiar un repositorio remoto git clone URL
Subir / bajar cambios git push · git pull

Ejemplo guiado

Problema: poner bajo control de versiones un proyecto de calificaciones y crear una rama para una mejora.

mkdir calificaciones
cd calificaciones
git init

Crea promedio.py:

def promedio(lista):
    return sum(lista) / len(lista)

print(promedio([8, 9, 10]))

Y un archivo .gitignore para que Git ignore lo que no debe guardarse:

__pycache__/
.venv/
.env

Primer commit:

git add promedio.py .gitignore
git commit -m "Primera versión del cálculo del promedio"

Una mejora en una rama:

git switch -c lista-vacia

Edita promedio.py para que no falle con listas vacías (if not lista: return 0), y luego:

git diff
git commit -am "Evita división entre cero con lista vacía"
git switch main
git merge lista-vacia
git log --oneline

Resultado esperado: git log --oneline muestra los dos commits, el más reciente arriba.

Subir a GitHub (opcional): crea un repositorio vacío en GitHub y sigue las instrucciones que muestra (git remote add origin … y git push -u origin main).

Errores comunes

Buenas prácticas

  • Commits pequeños y frecuentes, cada uno con un solo propósito.
  • Revisa con git status y git diff antes de cada commit.
  • Usa .gitignore desde el principio.
  • Trabaja las mejoras en ramas y deja main siempre funcionando.
  • Nunca guardes secretos en el repositorio.
  • Ejecuta las pruebas antes de subir cambios.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

Antes conviene ver…

© solutions_ · Fundamentos de programación · 46 Git