Saltar a contenido

Práctica 1.4: GitHub Básico

P4 - Ramas, stash y GitHub

Partimos del repositorio local de P3. Una rama permite trabajar en una línea separada y stash guarda temporalmente cambios sin confirmar. GitHub será el remoto; la autenticación SSH se estudiará con detalle en P7.

1. Objetivos

  • Crear, consultar, cambiar y fusionar ramas.
  • Resolver un conflicto sencillo sin eliminar cambios a ciegas.
  • Guardar y recuperar cambios con stash.
  • Crear un remoto en GitHub y sincronizarlo con la rama main.

2. Relación con RA1 y criterios de evaluación

Esta práctica apoya el RA1, sobre todo CE b y CE c, porque organiza el proyecto creado con el IDE. Git/GitHub son herramientas instrumentales y no se equiparan a criterios normativos adicionales.

3. Pasos a seguir

3.1. Trabajar con ramas

Consulta previamente la explicación de ramas en el libro de Git y de los procedimientos para ramificar y fusionar.

Ramas de un proyecto Git

La imagen representa una línea principal y una línea de trabajo separada. En la práctica, la rama desarrollo-ejercicios cumplirá ese papel antes de integrarse en main.

  1. Comprueba que el árbol está limpio y crea una rama descriptiva:
git status
git switch -c desarrollo-ejercicios

En versiones antiguas de Git puedes usar git checkout -b desarrollo-ejercicios; no uses checkout para descartar archivos. 2. Crea ejercicios1/prueba2.py:

numero1 = int(input("Dame un número: "))
numero2 = int(input("Dame otro número: "))
print(f"{numero1} + {numero2} = {numero1 + numero2}")
  1. Ejecuta, añade y confirma:
git add ejercicios1/prueba2.py
git commit -m "Crea el programa prueba2"
git branch
  1. Vuelve a main con git switch main y comprueba que el archivo de la rama de desarrollo no aparece. Regresa con git switch desarrollo-ejercicios. Si tienes cambios sin confirmar y cambias de rama, Git puede llevar esos cambios al nuevo contexto si no entran en conflicto. Por eso debes consultar git status y confirmar, guardar con git stash o descartar de forma consciente antes de cambiar de rama.
  2. Fusiona la rama desde main:
git switch main
git merge desarrollo-ejercicios
  1. Si aparece un conflicto, abre el archivo, decide qué contenido conservar y elimina los marcadores <<<<<<<, ======= y >>>>>>>. Después:
git add archivo-resuelto.py
git commit -m "Resuelve el conflicto de fusion"

Si prefieres cancelar una fusión antes de resolverla, usa git merge --abort. No borres la rama hasta comprobar el resultado; entonces git branch -d desarrollo-ejercicios es seguro porque ya se ha fusionado.

3.2. Guardar cambios con stash

  1. Modifica un archivo sin confirmarlo y comprueba git status.
  2. Guarda el cambio con un mensaje:
git stash push -m "Cambio provisional"
git stash list

En versiones antiguas de Git también aparece git stash save "Cambio provisional"; git stash push -m es la forma actual recomendada.

  1. Cambia de rama, realiza la tarea necesaria y vuelve a la rama original.
  2. Recupera el cambio. apply lo conserva en la lista; pop lo aplica y lo elimina si todo va bien:
git stash apply stash@{0}
# Cuando lo hayas comprobado:
git stash drop stash@{0}

3.3. Conectar con GitHub

  1. Crea un repositorio vacío en GitHub. Usa un nombre neutro como prog-u1-practica y no incluyas contraseñas, tokens ni datos personales en el material entregado.
  2. Añade el remoto con la URL de tu cuenta y repositorio:
git remote add origin https://github.com/TU_USUARIO/TU_REPOSITORIO.git
git remote -v
  1. Publica main y establece el seguimiento:
git push -u origin main
  1. Para incorporar cambios del remoto usa git pull --rebase origin main solo cuando el equipo lo haya acordado; para empezar, git pull origin main es suficiente. Comprueba siempre git status después.

  2. También puedes clonar el repositorio en otro equipo:

git clone https://github.com/TU_USUARIO/TU_REPOSITORIO.git
cd TU_REPOSITORIO

Después de clonar, git pull origin main descarga e integra los cambios publicados. Antes de subir los tuyos, revisa git status, git diff y el historial para no publicar archivos que no correspondan a la tarea.

4. Comprobaciones de finalización

  • main contiene la fusión y la rama de trabajo aparece en el historial.
  • Has mostrado un stash guardado y recuperado sin pérdida de cambios.
  • git remote -v apunta a un repositorio de prueba propio.
  • git push -u origin main termina correctamente.

5. Ejercicios y entregables

  1. Crea una rama para mejorar un ejercicio de P2 y fusiónala en main.
  2. Provoca un conflicto controlado en una línea y resuélvelo documentando la decisión.
  3. Entrega el enlace al repositorio de prueba, el historial y capturas del conflicto resuelto y del stash.

Fuentes y referencias