Git y GitHub

Esta es la práctica 0-A, común a los módulos que utilizan repositorios. Aprenderás a conservar cambios, distinguir fork de clone y recibir actualizaciones sin sustituir tu trabajo. Es formativa y no genera una entrega evaluable adicional. Si ya dominas estas operaciones, demuestra la comprobación final y continúa con Codespaces como entorno de desarrollo.

Punto de partida

Necesitas una cuenta de GitHub y Git instalado en un entorno local. Puedes utilizar la web para las primeras operaciones y completar las comprobaciones de terminal durante la práctica 0-B. En AD trabajaremos sobre el repositorio público ad-ejemplos; en otro módulo se usa su repositorio de ejemplos.

Las direcciones con TU_USUARIO son provisionales y se sustituirán por las reales del docente. MI_USUARIO en los comandos representa tu propia cuenta.

Entender las copias

  • Git mantiene el historial; GitHub aloja repositorios y facilita colaboración.

  • Un fork es otro repositorio en GitHub, vinculado al original. No es una rama.

  • Un clone crea una copia de un repositorio Git en tu ordenador o Codespace.

  • origin suele ser el remoto del repositorio que clonaste: aquí, tu fork.

  • upstream es el nombre que daremos al remoto del maestro del docente.

  • Un commit registra una versión local; push envía commits al remoto.

  • fetch recibe referencias y objetos; no integra cambios en tus archivos.

  • merge integra historias. pull, según su configuración, combina fetch con una integración por merge o rebase; aquí practicaremos fetch y merge separados.

Actividad

Dibuja maestro → fork → clone. Si haces un commit en el clone, ¿se modifica automáticamente el maestro? ¿Y tu fork de GitHub?

Comprobación razonada

El commit queda local. Push lo publica en el remoto elegido, normalmente tu fork. El maestro no recibe esos cambios automáticamente.

Trabajar desde el terminal

  1. Abre ad-ejemplos en GitHub y usa Fork hacia tu cuenta.

  2. Copia la URL de tu fork desde Code y clónalo. Si usas HTTPS localmente, autentícate con GitHub CLI (gh auth login y gh auth setup-git) o el mecanismo admitido por GitHub; no uses tu contraseña de cuenta como contraseña Git.

    git clone https://github.com/MI_USUARIO/ad-ejemplos.git
    cd ad-ejemplos
    git remote -v
    git status
    git log --oneline -5
    
  3. Comprueba que Git conoce tu identidad para commits. Si aún no está configurada, establece user.name y user.email en este repositorio; puedes usar el correo noreply que te proporciona GitHub. No es tu contraseña.

  4. Crea una rama y un archivo git/mi-experimento.md con tu explicación de fork y clone. No incluyas datos personales innecesarios.

    git switch -c experimento-git
    git status
    git diff
    git add git/mi-experimento.md
    git diff --staged
    git commit -m "docs: explica fork y clone"
    git push -u origin experimento-git
    

    git diff no muestra el contenido de un archivo nuevo sin seguimiento; status lo identifica. Después de añadirlo, diff --staged sí lo muestra.

  5. Abre tu fork en la web, selecciona la rama y localiza el commit.

  6. Configura el maestro. Si upstream ya existe, comprueba su URL con git remote -v en lugar de añadirlo otra vez.

    git remote add upstream https://github.com/TU_USUARIO/ad-ejemplos.git
    git fetch upstream
    git log --oneline --all --graph
    git switch main
    git diff HEAD..upstream/main
    git merge upstream/main
    git push origin main

    Haz el merge con el árbol limpio. Si todavía no hay novedades, explica por qué responde que ya está actualizado; repítelo cuando el docente publique un cambio. Un fetch sin novedades sigue siendo una operación válida.

  7. Para ensayar una integración local, incorpora experimento-git a main y vuelve a hacer push. Distingue esa integración de recibir un cambio nuevo del docente. Si hay conflicto, revisa ambas versiones antes de resolverlo.

Alternativa desde la web

Puedes hacer fork, crear una rama, editar el archivo, crear un commit y comparar versiones desde GitHub. Sync fork permite incorporar actualizaciones. Esta alternativa no crea un clone local; comprueba los remotos y los comandos Git en el terminal de Codespaces durante Codespaces como entorno de desarrollo.

Comprobación final

Actividad

Muestra tu fork, su URL de origen, los remotos del clone, una modificación y el hash del commit. Explica qué cambió después de commit, push y fetch. No se exige un número de commits. Conserva estas comprobaciones como experimentación; la evidencia evaluable de AD va en el fork privado de FCT.

Recursos de consulta