← GIT

Git y GitHub

Uso general · 2026

El caos sin control de versiones

Un ensayo en grupo, editado por correo. Cada quien reenvía su versión:

  • ensayo_final.docx
  • ensayo_final_v2.docx
  • ensayo_final_v2_JUAN.docx
  • ensayo_final_v2_JUAN_correcciones_MARIA.docx

Las preguntas que duelen

¿Cuál es la versión buena?
¿Y si dos personas editan el mismo párrafo a la vez?
¿Quién cambió qué y por qué?
¿Cómo revierto un error de hace tres días?

Git: control de versiones distribuido

  • Guarda el historial completo de cambios de un proyecto.
  • Permite trabajar en paralelo sin sobrescribir el trabajo de otros.
  • Deja volver a cualquier punto anterior del proyecto.
  • Funciona sin conexión: todo el historial vive en tu máquina.

Los tres estados de un archivo

Working directory
tus archivos
git add
Staging area
lo que vas a guardar
git commit
Repositorio
historial de snapshots

Working directory

Tu copia de trabajo

Donde editas tus archivos normalmente. Aquí viven los cambios que aún no le has dicho a Git que guarde.

Con git add el cambio pasa al staging area.

Staging area

La caja del próximo commit

Aquí eliges qué cambios van a formar parte del próximo commit. Puedes preparar solo una parte de lo que editaste.

Con git commit lo que está en staging pasa al repositorio.

Repositorio

El historial

El historial de commits, guardado localmente. Cada commit es un snapshot permanente al que siempre puedes volver.

Con git push ese historial se sincroniza con el remoto.

Conceptos clave

Repositorio (repo): la carpeta con memoria — el proyecto y todo su historial.
Commit: una fotografía del proyecto en un momento, con un mensaje que explica el cambio.

GitHub

Git ≠ GitHub

Git es la herramienta que vive en tu máquina. GitHub es la plataforma en la nube que hospeda tus repositorios y les agrega colaboración.

Guarda tus repositorios en línea, accesibles desde cualquier lado.
Es el punto de encuentro para que un equipo trabaje sobre el mismo proyecto.

Qué puedes hacer en GitHub

Issues: organizar tareas y reportar bugs.
Actions: automatizar pruebas y despliegues (CI/CD).
Portafolio: tu perfil público muestra tu trabajo.
Open source: usar y contribuir a proyectos reales.
GitHub Pages: publicar sitios web gratis.
Releases: distribuir versiones de tu software.

Comandos básicos

git clone
git add
git commit
git push
git pull
git status

git clone

git clone <url>
Analogía

Sacar una copia de la biblioteca a tu casa.

Qué hace

Descarga un repositorio remoto completo, con su historial.

git add

git add <archivo>
Analogía

Meter documentos en una caja para enviar.

Qué hace

Mueve cambios del working directory al staging area.

git commit

git commit -m "mensaje"
Analogía

Sellar la caja con una nota de qué contiene.

Qué hace

Guarda un snapshot permanente en el historial local.

git push

git push
Analogía

Enviar la caja a la bodega central.

Qué hace

Sube tus commits locales al repositorio remoto.

git pull

git pull
Analogía

Traer las cajas nuevas de la bodega.

Qué hace

Descarga y fusiona los cambios del remoto a tu copia local.

git status

git status
Tu mejor amigo

El comando que usarás todo el tiempo para saber "¿en qué estado estoy?".

Qué hace

Muestra qué archivos están untracked, staged o modificados.

El ciclo de status de un archivo

Ciclo de status de un archivo en Git

git add mueve a staged · git commit confirma · editar un archivo lo vuelve modified.

Trabajo en paralelo

branch — líneas de trabajo paralelas
merge — unir dos ramas en una
fork — tu copia del repo completo
fetch / pull — sincronizar con el remoto

Branches

Qué es

Una rama es una línea de trabajo paralela. Puedes experimentar en ella sin tocar la rama principal (main).

Uso típico: una rama por funcionalidad (feature/login) para no romper lo que ya sirve en main.

Crear y cambiar de rama

git branch <nombre> — crea una rama nueva.
git checkout -b <nombre> — crea la rama y se cambia a ella en un solo paso.
git checkout main — vuelve a la rama principal.

Merge: unir dos ramas


git checkout main
git merge feature/login
        
git checkout main — ubícate en la rama que va a recibir los cambios.
git merge feature/login — trae los commits de feature/login hacia main.

Conflictos de merge

Si los cambios no chocan, Git los combina automáticamente.
Si dos ramas tocan la misma línea del mismo archivo, hay un conflicto y tú decides a mano qué versión queda.

Fork

Qué es

Una copia completa de un repositorio guardada en tu propia cuenta de GitHub.

Fork: copia del repo en el servidor, en tu cuenta de GitHub.
Clone: copia del repo en tu máquina local.

Fork vs branch

Branch: otra línea de trabajo dentro del mismo repositorio.
Fork: un repositorio completo aparte, normalmente en otra cuenta.
Usa un fork cuando no tienes permiso de escritura sobre el original (ej. open source).

Fetch vs Pull

git fetch — trae los cambios del remoto pero no los aplica todavía. Mirar antes de mezclar.
git pull = fetch + merge. Trae los cambios y los combina de una vez.

Pull Request

Qué es

Una propuesta para incorporar los cambios de una rama (o de un fork) a otra rama, con revisión antes de hacer el merge.

Permite revisar y discutir el código antes de fusionarlo.
Flujo: subes tu rama, abres el Pull Request, revisión y comentarios, y luego el merge.
Es la forma estándar de proponer cambios a un proyecto del que hiciste fork.