Unidad 3

Fundamentos en Ciencias de la Computación

Control de cambios y documentación técnica

Git + Markdown

Objetivos del tema

  • Entender qué problema resuelve Git
  • Comprender el flujo básico de trabajo local
  • Trabajar con ramas y merge
  • Resolver conflictos simples
  • Conocer el papel de GitHub y SSH
  • Escribir documentación simple en Markdown
  • Integrar Git + Markdown en un entregable

Fundamentos en Ciencias de la Computación

Fundamentos en Ciencias de la Computación

1. El problema

¿Por qué necesitamos control de versiones?

  • Varias personas editan archivos
  • Hay errores y cambios no deseados
  • A veces necesitamos volver atrás
  • Hace falta saber quién cambió qué
  • Hace falta trabajar sin pisarnos

Fundamentos en Ciencias de la Computación

¿Qué es un VCS?

Un sistema de control de versiones:

  • registra cambios en el tiempo
  • permite recuperar versiones anteriores
  • ayuda a colaborar
  • conserva historia y trazabilidad

Fundamentos en Ciencias de la Computación

¿Qué es Git?

  • Sistema de control de versiones distribuido
  • Gratuito y de código abierto
  • Creado para gestionar cambios de forma robusta
  • Cada repositorio tiene su propia historia completa

Fundamentos en Ciencias de la Computación

Idea clave: snapshots

Git trabaja con snapshots:

  • cada commit registra una “foto” del estado
  • no pensamos en “guardar archivo”
  • pensamos en “guardar estado del proyecto”

Fundamentos en Ciencias de la Computación

Git no es GitHub

  • Git: herramienta de control de versiones
  • GitHub: plataforma para alojar repositorios Git
  • Se puede usar Git sin GitHub

Fundamentos en Ciencias de la Computación

Fundamentos en Ciencias de la Computación

2. Modelo mental de Git

Los tres estados

Fundamentos en Ciencias de la Computación

add

staged for commit (add)

deleted

commit

(edit)

Tracked (en git)

Staged

untracked

Commited

Modified

archivo nuevo

preparado

guardado en historia

cambiado

Las tres áreas

Fundamentos en Ciencias de la Computación

working directory

staging area

.git directory
(Repository)

checkout project

stage files

commit

Flujo de trabajo

{

Comandos mínimos del flujo básico

git init
git status
git add .
git commit -m "mensaje"

Fundamentos en Ciencias de la Computación

Primer ejemplo local

git init
echo "Hola Git" > archivo.txt
git status
git add archivo.txt
git commit -m "Primer commit"

Fundamentos en Ciencias de la Computación

Observar cambios

git status
git diff
git log --oneline
  • status muestra el estado actual
  • diff muestra diferencias
  • log muestra historia

Fundamentos en Ciencias de la Computación

Buenas prácticas iniciales

  • commits pequeños
  • mensajes claros
  • revisar antes de confirmar
  • no acumular muchos cambios mezclados

Fundamentos en Ciencias de la Computación

Fundamentos en Ciencias de la Computación

3. Trabajo en paralelo

¿Qué es una rama?

Una rama es una línea de trabajo independiente.

Sirve para:

  • probar cambios
  • trabajar en paralelo
  • no romper la rama principal

Fundamentos en Ciencias de la Computación

main

develop

Crear y usar una rama

git branch
git checkout -b feature-x

Luego:

git add .
git commit -m "Agrega cambio en feature-x"

Fundamentos en Ciencias de la Computación

Integrar cambios: merge

git checkout main
git merge feature-x
  • Si no hay solapamiento: merge limpio
  • Si hay solapamiento: posible conflicto

Fundamentos en Ciencias de la Computación

Conflicto de merge

Git muestra marcas como estas:

<<<<<<< HEAD
versión actual
=======
versión de la otra rama
>>>>>>> feature-x

Fundamentos en Ciencias de la Computación

Idea clave sobre conflictos

Un conflicto significa:

  • dos cambios incompatibles
  • en la misma zona del proyecto
  • que requieren una decisión consciente

Fundamentos en Ciencias de la Computación

Fundamentos en Ciencias de la Computación

4. Onboarding técnico (tarea)

Bienvenido/a 

Formas parte del equipo de desarrollo de:

Sistema documental académico en construcción

Tu rol: Desarrollador/a junior

Tienes por delante 5 misiones.
Si las completas correctamente, obtendrás 90 puntos y avanzarás a:

Junior Level 0.1

Fundamentos en Ciencias de la Computación

Reglas:

  • Cada integrante trabaja en su clon local del repositorio
  • Desde main, crea su propia rama
  • Todos trabajan sobre el mismo archivo
  • Pero en secciones distintas

Esto no es un ejercicio: es una simulación de trabajo real

Fundamentos en Ciencias de la Computación

✔ Trabajo prolijo y commits claros → bonificaciones
✔ Buen uso de ramas → bonificaciones
✔ Integración sin errores → bonificaciones

✘ Cambios desordenados → penalización
✘ Mensajes de commit pobres → penalización
✘ Romper el trabajo de otros → penalización

https://qrco.de/bgjPWM

Fundamentos en Ciencias de la Computación

No se trata solo de “que funcione”.

Se trata de demostrar que puedes trabajar:

  • ser parte de un equipo
  • seguir buenas prácticas
  • utilizar Git de forma profesional

Tu desafío

Objetivo final

Tu trabajo impacta directamente en el proyecto.

Es tu oportunidad de demostrar lo que puedes hacer para que
Campus U1 funcione y crezca correctamente

Fundamentos en Ciencias de la Computación

Tu desafío

No se trata solo de “que funcione”.

Se trata de demostrar que puedes trabajar:

  • ser parte de un equipo
  • seguir buenas prácticas
  • utilizar Git de forma profesional

Objetivo final

Tu trabajo impacta directamente en el proyecto.

Es tu oportunidad de demostrar lo que puedes hacer para que
Campus U1 funcione y crezca correctamente

En este equipo valoramos:

  • claridad
  • orden
  • responsabilidad

Esperamos que tu trabajo marque una diferencia real en el proyecto

Fundamentos en Ciencias de la Computación

Tu desafío

No se trata solo de “que funcione”.

Se trata de demostrar que puedes trabajar:

  • ser parte de un equipo
  • seguir buenas prácticas
  • utilizar Git de forma profesional

Fundamentos en Ciencias de la Computación

5. Remotos, Github y SSH

¿Qué es un remoto?

Un remoto es una copia del repositorio en red

Permite:

  • compartir trabajo
  • respaldar historia
  • colaborar a distancia

Fundamentos en Ciencias de la Computación

Git remote

clone

push

Operaciones remotas básicas

git clone URL
git remote -v

git push origin main

Fundamentos en Ciencias de la Computación

Autenticación con SSH

Pasos básicos:

  1. crear cuenta en GitHub
  2. generar una clave SSH
  3. registrar la clave pública en GitHub
  4. usar la URL SSH del repositorio

Fundamentos en Ciencias de la Computación

Generar una clave SSH

ssh-keygen -t ed25519 -C "tu@email.com"

Luego copiar la clave pública y agregarla en GitHub.

Fundamentos en Ciencias de la Computación

6. Markdown como contenido versionable

¿Qué es Markdown?

Markdown es una sintaxis simple para escribir texto estructurado.

Se usa mucho para:

  • README
  • documentación técnica
  • apuntes
  • manuales breves

Fundamentos en Ciencias de la Computación

Sintaxis básica

# Título
## Subtítulo
- ítem
**negrita**
`código`
[enlace](https://ejemplo.com)

Fundamentos en Ciencias de la Computación

¿Por qué Git y Markdown combinan bien?

  • Markdown es texto plano
  • Git compara muy bien texto
  • los cambios quedan claros
  • la historia de la documentación se puede seguir

Fundamentos en Ciencias de la Computación

Ejemplo de README

# Proyecto Git

## Integrantes
- Nombre 1
- Nombre 2

## Qué hicimos
Breve descripción del trabajo.

## Problemas encontrados
Resumen breve.

## Cómo los resolvimos
Resumen breve.

Fundamentos en Ciencias de la Computación

Materiales de apoyo

Conceptos de la unidad

Repositorio gamificado

Referencia oficial de Git

Fundamentos en Ciencias de la Computación

Sobre esta presentación

Atribución 4.0 Internacional (CC BY 4.0)

https://creativecommons.org/licenses/by/4.0/deed.es

Fundamentos en Ciencias de la Computación