Saltar al contenido
Aula en la nube
1º DAM · Proyecto web personal · Sesión 2 (práctica)

GitHub en carne viva: tu web, versionada por ti

Hoy tu web deja de vivir solo en tu portátil. Cada uno sale de clase con su cuenta de GitHub, su Git configurado y autenticado, su repositorio enlazado a la web que empezaste el viernes, varios commits de verdad, una máquina del tiempo usada, y dos diseños distintos en dos ramas. Con una norma que no se rompe hoy: todas las dudas se preguntan primero a los modelos del centro.

🤖 Pregúntalo a la IA del centro⌨️ Tú escribes las instrucciones🔑 Un token, no tu contraseña🕰 Commits = máquina del tiempo🌚🌕 Dos ramas, dos diseños

Git es un grafo de bolitas, no una carpeta con versiones. Cada commit es una bola; las flechas marcan hacia dónde avanza la historia; una píldora (HEAD) dice dónde estás. Todo lo de hoy son bolitas, flechas y dos o tres palabras: mira cada dibujo antes de tocar el teclado y sabrás qué tecla pulsar.

maindiseno-morado«tu web»«la morada»«la elegida»
Las reglas del juego de hoy (así se trabaja de verdad con IA):
  1. Esta página te dice qué conseguir, no cómo. Los comandos no vienen escritos aquí a propósito: los consigue cada uno preguntando a los modelos del centro.
  2. Con una excepción, la de hoy: la configuración inicial y la autenticación sí vienen escritas, comando a comando, en las dos secciones de abajo. Pelearse a ciegas con un token no enseña nada, y el curso entero depende de que esto quede bien montado. Todo lo demás —add, commit, ramas, merge— lo sigues preguntando tú.
  3. Preguntas al chat del centro, lees lo que te responde, y lo tecleas tú en tu terminal, entendiendo qué haces. Hoy no trabajamos de forma agéntica: la IA te guía, el que pulsa las teclas eres tú.
  4. Comprueba cada paso con el recuadro verde de la misión antes de seguir. Si no está el visto, no avances: pregunta de nuevo, más concreto.
  5. Si te atascas de verdad tras dos preguntas, levanta la mano y te ayudo. Pero quien te crea la cuenta o el repo sin que lo hayas hecho tú no aprende la sesión: el objetivo del curso es que sepas hacerlo, no que lo tengas hecho.

Qué es Git, de verdad

La mitad de los líos de hoy vienen de creer que Git y GitHub son la misma cosa. No lo son, y no se parecen: uno es un programa y el otro es una web. Empecemos por el programa.

  • Es un programa que se instala en tu ordenador. Lo escribió Linus Torvalds en 2005, el mismo que hizo Linux, porque necesitaba controlar los cambios de un proyecto donde miles de personas tocan el mismo código a la vez. Se maneja escribiendo comandos.
  • No tiene cuenta, ni contraseña, ni necesita internet. Con el wifi caído puedes hacer commits toda la tarde. Git no sabe quién eres ni le importa: eso llega después, y es de GitHub.
  • Lo que hace es guardar fotos completas de tu proyecto. Cada vez que le dices «guarda», Git congela cómo estaba todo en ese instante y le pone una etiqueta única de 40 caracteres —el hash, del que solemos ver solo los siete primeros: a1b2c3d—. Tu historia es la cadena de esas fotos, y puedes volver a cualquiera.
  • Vive en una carpeta oculta llamada .git, dentro de tu proyecto. Eso es el repositorio: copia la carpeta del proyecto en un pendrive y te llevas la historia entera; borra .git y tus ficheros siguen ahí, pero la historia desaparece para siempre.
  • Es «distribuido». Cada copia del repositorio es un repositorio completo, con toda la historia dentro, no un trozo que depende de un servidor. Por eso no hay un «Git central» al que pedir permiso: hay copias que se ponen de acuerdo.

Las cuatro paradas de un cambio (esto es lo que más cuesta)

Cuando cambias un color en tu CSS, ese cambio no salta directo a GitHub: hace cuatro paradas, y cada salto lo provoca un comando distinto. Entender esto es entender Git entero; la mayoría de los «no me sube nada» son un cambio dormido en la parada equivocada.

working treesin guardartu carpeta: lo que vesstaging(o «index»)lo que entrará en la foto.gitel repositorio localtu historia ya guardadaorigin/mainel remotola copia que vive en GitHubgit statusgit addgit commitgit pushgit status te dice en qué zona está cada cambio

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Un cambio tuyo hace cuatro paradas. Cada flecha es un comando, y solo la última sale de tu portátil. Pulsa cualquier comando.
La consecuencia práctica: git add no guarda, solo apunta lo que quieres guardar. git commit guarda, pero solo en tu portátil. git push es el único que sale a internet. Si haces commit y cierras el portátil, en GitHub no hay nada: no es un fallo, es que te falta una parada.

Qué es GitHub, de verdad

GitHub es una web y una empresa: github.com, nacida en 2008 y comprada por Microsoft en 2018. Su trabajo es guardar repositorios de Git en sus servidores y montar herramientas alrededor. Es un sitio, no una tecnología —hay otros que hacen lo mismo: GitLab, Bitbucket, Codeberg, o un servidor tuyo—. Podrías usar Git toda tu vida sin abrir GitHub jamás.

Entonces, ¿para qué lo usamos? Porque encima de Git añade todo esto, que Git no tiene:

Copia remota

Tu historia deja de vivir solo en tu portátil. Si se rompe, se moja o lo pierdes, tu trabajo sigue ahí.

Pull requests

No existen en Git: son invento de GitHub. Propones un cambio, otra persona lo revisa y decide si entra.

Issues y Projects

Tareas, errores y tableros pegados al código, no en otra herramienta aparte.

Revisión de código

Comentarios línea a línea sobre un cambio concreto. Así se aprende de verdad en una empresa.

Actions

Robots que en cada push ejecutan tus pruebas o despliegan la web sin que tú hagas nada.

Pages

Publicar una web estática gratis en tuusuario.github.io. Literalmente, la web que estás haciendo.

Perfil público

Tu portafolio: repositorios, el cuadrito verde de contribuciones y lo que enseñas de ti.

Cuentas y permisos

Quién puede escribir dónde. Aquí nacen los usuarios, el doble factor y los tokens de hoy.

La frase para acordarse: Git es el programa que guarda tu historia; GitHub es el sitio donde esa historia se guarda para los demás. Y el detalle que lo explica todo sobre lo que viene ahora: Git no tiene usuarios ni contraseñas; GitHub sí. Toda la autenticación que vamos a montar es de GitHub, no de Git.

Las dos herramientas, una al lado de la otra

 GitGitHub
Qué esUn programa instalado en tu ordenadorUna web y una empresa (github.com)
Quién y cuándoLinus Torvalds, 2005, para el kernel de LinuxGitHub Inc., 2008; de Microsoft desde 2018
¿Necesita internet?No. Sin wifi puedes trabajar toda la tardeSí: es un servidor al que te conectas
¿Usuario y contraseña?No tiene. No sabe quién eresSí: cuenta, doble factor y tokens
Dónde guarda tu historiaEn la carpeta oculta .git de tu proyectoEn sus servidores, en una copia del repositorio
Qué te daHistorial, ramas, fusiones, volver atrásCopia remota, pull requests, issues, Actions, Pages, perfil
¿Se puede usar sin el otro?Sí, perfectamente y para siempreNo: GitHub guarda repositorios de Git
Se maneja conComandos: add, commit, branch, mergeBotones en la web; push y pull hablan con él
TU PORTÁTIL · GitGITHUB · la nubetus ficheroscommit.gittu historialcommitsrepo: mi-weborigin/maincommitsclonepushpullgit commit -m "cambios"solo en tu portátilgit push -u origin mainsube tus commitsgit pullbaja lo que faltagit clone https://github.com/ana/mi-web.gitsin push, GitHub no se entera de nada

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Git vive dentro de tu portátil (.git); GitHub es la copia que compartes. clone baja una vez; luego push sube y pull baja. Misión 3.

Configuración global: dile a Git quién eres

Antes del primer commit hay que configurar Git en ese ordenador. Son dos cosas: quién eres (para que pueda firmar tus commits) y cómo quieres que se comporte (para que no te sorprenda). Se hace una vez y vale para todos tus repositorios.

Los tres niveles: system, global y local

Git lee su configuración de tres sitios, del más general al más concreto, y siempre gana el más cercano al repositorio:

NivelFicheroA quién afecta
--system/etc/gitconfigA todos los usuarios del ordenador. Casi nunca se toca.
--global~/.gitconfigA ti, en ese ordenador, en todos tus repos. Es el que vas a usar hoy.
(sin nada).git/configSolo a ese repositorio. Gana sobre los otros dos.
Si el portátil es compartido (el del aula, el de tu hermano) piénsalo dos veces antes de poner tu identidad en --global: se la quedas puesta al siguiente, y sus commits saldrán firmados con tu nombre. En un equipo que no es tuyo, configura la identidad dentro de tu repo, sin --global.

Los cinco comandos, uno a uno

Cámbialos por tus datos y pégalos en la terminal, línea a línea. Las comillas son necesarias cuando el valor lleva espacios.

git config --global user.name "Ana García"
git config --global user.email "ana@ejemplo.com"
git config --global init.defaultBranch main
git config --global core.editor "nano -w"
git config --global pull.rebase false

El correo sin enseñar tu correo

Cuidado con una cosa: el correo del commit se publica y queda visible para cualquiera que mire tu repositorio. Si no quieres que tu correo real acabe en manos de un robot de spam, GitHub te regala uno de mentira que sigue enlazando con tu perfil. En Settings → Emails marcas Keep my email addresses private y te dan una dirección con esta pinta, que es la que pones en user.email:

git config --global user.email "12345678+anagarcia@users.noreply.github.com"

Comprobar que ha quedado bien

git config --global --list
git config --list --show-origin

El primero tiene que enseñar, como mínimo, tu user.name y tu user.email. El segundo dice además de qué fichero sale cada línea: es el comando con el que se descubre, en dos segundos, que el portátil traía puesta la configuración de otra persona. Y si estás dentro de un repo, git config user.email a secas te dice el que se está aplicando ahí de verdad, contando el local.

Esto que acabas de configurar NO es tu contraseña. user.name y user.email son etiquetas: Git no las comprueba con nadie y no dan acceso a nada. Poner ahí tu correo no te conecta con GitHub ni te deja subir nada. Que dos cosas te pidan un correo no significa que sean la misma cosa. El permiso para subir se pide aparte, y va en la sección siguiente.

Usuario y contraseña: qué escribir exactamente

Aquí es donde se atasca media clase todos los años, así que vamos despacio. La clave es ver que Git te pide dos cosas distintas en dos momentos distintos: la identidad, al hacer commit, y las credenciales, al hacer push. No son lo mismo y no se escriben igual.

1 · Al hacer commit, Git te FIRMAgit commit -m "hero"Git escribe tu identidad dentro del commituser.name = Ana Garcíasale en cada commituser.email = ana@gmail.comte enlaza con tu perfilGit NO comprueba esto: es una firma, no una llave.2 · Al hacer push, GitHub te PIDE LA LLAVEgit pushGitHub comprueba que tienes permisoUsername: anagarciatu usuario de GitHubPassword: ghp_8f3K…9dQel token, NO tu contraseñaLa contraseña de github.com falla aquí desde 2021.identidad ≠ credenciales: son dos cosas distintas

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Identidad y credenciales se piden en momentos distintos y no son lo mismo. Pulsa cada comando.

El momento exacto: qué sale en la terminal

Cuando haces tu primer git push por HTTPS, la terminal se para y te enseña estas dos líneas:

Username for 'https://github.com':
Password for 'https://anagarcia@github.com':

Username

Tu nombre de usuario de GitHub. El que sale en la dirección de tu perfil: si tu perfil es github.com/anagarcia, escribes anagarcia.

No el correo. No tu nombre y apellido. No lo que pusiste en user.name.

Password

Un token de acceso personal: una tira larga de letras y números que empieza por ghp_. Lo generas tú en GitHub, en un minuto, y lo pegas aquí.

NO la contraseña con la que entras en github.com. GitHub dejó de aceptarla para Git el 13 de agosto de 2021: por muy bien escrita que esté, siempre va a fallar.

Cómo se saca el token, paso a paso

  1. 1 · Entra en github.com con tu cuenta.
  2. 2 · Pulsa tu foto, arriba a la derecha, y entra en Settings.
  3. 3 · En la columna de la izquierda, baja hasta el final: Developer settings.
  4. 4 · Personal access tokens → Tokens (classic) → botón Generate new token (classic).
  5. 5 · En Note, un nombre para acordarte de para qué es: portatil-aula. En Expiration, 90 días (lo que dura esta parte del curso).
  6. 6 · En Select scopes, marca la casilla repo, la primera del todo: con eso puedes leer y escribir en tus repositorios. No marques nada más; un token da exactamente los permisos que le pongas, y de más no hace falta.
  7. 7 · Abajo del todo, Generate token.
  8. 8 · Copia el token ahora, con el botón de copiar. En cuanto salgas de esa página no se vuelve a enseñar nunca. Si lo pierdes no es un drama: se borra ese y se genera otro.
Al pegarlo, la terminal no va a enseñar nada. Ni puntos, ni asteriscos, ni el cursor moviéndose: parece que no ha entrado, y ha entrado. Es así a propósito, para que nadie lo lea por encima de tu hombro. Pega y pulsa Enter a ciegas. Y ojo, que Ctrl+V no siempre pega en un terminal: en Linux suele ser Ctrl+Shift+V, en el Git Bash de Windows es clic derecho, y en Mac Cmd+V. Tecleado a mano te vas a equivocar seguro: se pega, siempre.

Para no volver a escribirlo cada vez

Git puede recordar la credencial. El credential helper que toca depende de tu sistema:

# Windows (viene con Git for Windows)
git config --global credential.helper manager

# macOS (lo guarda en el Llavero)
git config --global credential.helper osxkeychain

# Linux: en tu portátil, lo recuerda para siempre...
git config --global credential.helper store
# ...y en uno compartido, mejor que lo olvide en una hora:
git config --global credential.helper 'cache --timeout=3600'
El token es una contraseña, trátalo como tal. No se sube al repositorio, no se pega en el grupo de la clase, no sale en una captura de pantalla. Si se te escapa: Settings → Developer settings → el token → Delete, y generas otro; con eso el viejo deja de funcionar al instante. GitHub además rastrea los repositorios públicos y revoca por su cuenta los tokens que encuentra dentro — si algún día te llega ese correo, ya sabes lo que ha pasado.
🔒 Alternativa para quien acabe pronto: claves SSH (y no volver a escribir nada nunca)

En vez de usuario y token, tu ordenador y GitHub se reconocen por un par de claves. Se configura una vez y ya no pide nada más:

ssh-keygen -t ed25519 -C "ana@ejemplo.com"
cat ~/.ssh/id_ed25519.pub

Copia la línea entera que sale del segundo comando y pégala en GitHub, en Settings → SSH and GPG keys → New SSH key. Compruébalo con ssh -T git@github.com: tiene que contestarte con un Hi anagarcia!. Después, cambia la dirección de tu repo a la versión SSH:

git remote set-url origin git@github.com:anagarcia/mi-web.git

La clave privada es el fichero sin .pub y no sale de tu ordenador jamás; la que se sube es siempre la que acaba en .pub. Para saber por dónde estás hablando en cualquier momento: git remote -v. Si la dirección empieza por https:// te pedirá usuario y token; si empieza por git@github.com: usará la clave.

Los errores que vais a ver hoy (y qué significa cada uno)

Los mensajes de Git dan miedo por la pinta, pero casi todos dicen exactamente lo que pasa. Aquí están los que más salen, con el texto tal cual aparece. Búscalo, ábrelo, arréglalo. Y cuando te salga uno que no esté aquí: cópialo entero y pregúntaselo a la IA del centro, que para eso está.

Antes de nada, los tres comandos del diagnóstico: git status (en qué zona está cada cambio), git remote -v (a qué repositorio estás hablando) y git config --global --list (con qué identidad). Nueve de cada diez veces, el fallo se ve en uno de los tres.

No me deja ni empezar (configuración)

Author identity unknown — *** Please tell me who you are. fatal: unable to auto-detect email address

Qué ha pasado: No has configurado user.name y user.email en este ordenador. Git se niega a firmar un commit sin saber de quién es.

Cómo se arregla: Pones tu identidad global y repites el commit: el que falló no se ha perdido, tus cambios siguen preparados.

git config --global user.name "Ana García"
git config --global user.email "ana@ejemplo.com"
fatal: not a git repository (or any of the parent directories): .git

Qué ha pasado: Estás ejecutando Git en una carpeta que no es un repositorio: o te has equivocado de carpeta, o nunca llegaste a hacer git init.

Cómo se arregla: Mira dónde estás y si hay un .git ahí dentro. Si es la carpeta buena y no lo hay, la conviertes en repositorio.

pwd
ls -a
git init
Se abre una pantalla llena de ~ y no hay forma de salir

Qué ha pasado: No es un error: es vim, el editor que Git trae de fábrica, pidiéndote el mensaje de una fusión.

Cómo se arregla: Pulsa Esc, escribe :wq y Enter (guardar y salir). Y para que no vuelva a pasarte, cambia el editor por nano.

git config --global core.editor "nano -w"
hint: You have divergent branches and need to specify how to reconcile them.

Qué ha pasado: Tu copia y la de GitHub han avanzado cada una por su lado, y Git no quiere decidir por ti si fusionar o reescribir.

Cómo se arregla: Le dices de una vez cómo quieres que lo resuelva y repites el pull.

git config --global pull.rebase false
git pull

No me deja subir (autenticación)

remote: Support for password authentication was removed on August 13, 2021. fatal: Authentication failed for 'https://github.com/anagarcia/mi-web.git/'

Qué ha pasado: Has escrito la contraseña con la que entras en github.com. Para Git ya no vale, y no va a valer por mucho que la repitas.

Cómo se arregla: Generas un token de acceso personal y lo pegas donde pide Password. Tienes los ocho pasos en la sección de arriba.

remote: Invalid username or password. fatal: Authentication failed

Qué ha pasado: O el usuario está mal escrito (es el de github.com/TUUSUARIO, no tu correo), o el token está mal pegado, o ha caducado.

Cómo se arregla: Comprueba el usuario mirando la dirección de tu perfil, y si tienes la menor duda del token, genera uno nuevo: no cuesta nada.

remote: Permission to anagarcia/mi-web.git denied to otroalumno. fatal: unable to access '...': The requested URL returned error: 403

Qué ha pasado: El clásico del aula: el ordenador tiene guardadas las credenciales de quien lo usó antes que tú, así que está intentando subir con la cuenta de otra persona.

Cómo se arregla: Hay que borrar la credencial guardada. En Windows, busca «Administrador de credenciales» → Credenciales de Windows → borra las entradas git:https://github.com. En macOS, Acceso a Llaveros → busca github.com → borrar. En Linux, quita la línea de github.com de ~/.git-credentials. El siguiente push te volverá a pedir usuario y token: los tuyos.

remote: Repository not found. fatal: repository 'https://github.com/anagarcia/mi-web.git/' not found

Qué ha pasado: O el nombre está mal escrito (Git distingue mayúsculas, minúsculas y guiones), o el repositorio es privado y estás autenticado como otra persona, o nunca llegaste a crearlo.

Cómo se arregla: Mira a dónde estás apuntando y compáralo con la dirección que sale en el botón verde Code de tu repositorio en GitHub. Si no coincide, la corriges.

git remote -v
git remote set-url origin https://github.com/anagarcia/mi-web.git
git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.

Qué ha pasado: Estás usando SSH pero GitHub no reconoce tu clave: o no la has subido, o subiste la privada por error, o la subiste a otra cuenta.

Cómo se arregla: Pruebas la conexión y, si no te saluda por tu nombre, subes el contenido del fichero que acaba en .pub a Settings → SSH and GPG keys.

ssh -T git@github.com
cat ~/.ssh/id_ed25519.pub
Pego el token en Password y no aparece nada en la pantalla

Qué ha pasado: No es un error. Los terminales ocultan lo que escribes en una contraseña: ni puntos, ni asteriscos, ni cursor que avance.

Cómo se arregla: Pega y pulsa Enter a ciegas. Si al pegar no pasa nada de nada, prueba Ctrl+Shift+V (Linux), clic derecho (Git Bash en Windows) o Cmd+V (Mac).

Sube, pero hay algo raro

error: remote origin already exists.

Qué ha pasado: Ya habías enlazado este repositorio con un remoto, seguramente equivocado, y Git no lo pisa sin permiso.

Cómo se arregla: Miras a dónde apunta y le cambias la dirección en vez de añadir otro.

git remote -v
git remote set-url origin https://github.com/anagarcia/mi-web.git
error: src refspec main does not match any — error: failed to push some refs

Qué ha pasado: O todavía no has hecho ningún commit, y no hay nada que subir, o tu rama se llama master y estás intentando subir una rama main que no existe.

Cómo se arregla: Miras si hay commits y cómo se llama tu rama; si hace falta, la renombras a main y vuelves a subir.

git log --oneline
git branch
git branch -M main
git push -u origin main
! [rejected] main -> main (fetch first) — hint: Updates were rejected because the remote contains work that you do not have locally.

Qué ha pasado: En GitHub hay un commit que tú no tienes: casi siempre, el README que creaste al hacer el repositorio marcando «Add a README».

Cómo se arregla: Te traes ese commit y colocas los tuyos encima. Nunca --force en un repositorio compartido: borrarías el trabajo de otro.

git pull --rebase origin main
git push -u origin main
Mis commits salen con un muñequito gris y no cuentan en mi perfil

Qué ha pasado: El correo con el que firmas no es ninguno de los que tiene tu cuenta de GitHub, así que GitHub no sabe que esos commits son tuyos.

Cómo se arregla: Mira tus correos en Settings → Emails (o activa el noreply) y corrige la configuración. Los commits viejos se quedan como están; los nuevos ya saldrán bien.

git config --global user.email "12345678+anagarcia@users.noreply.github.com"
Mis commits aparecen firmados por un compañero

Qué ha pasado: Portátil compartido con la configuración global del anterior todavía puesta. Tus commits llevan su nombre y su correo.

Cómo se arregla: Compruebas quién está firmando y pones tu identidad antes de seguir (en un equipo que no es tuyo, sin --global).

git log --format="%an <%ae>" -5
git config user.name "Ana García"
git config user.email "ana@ejemplo.com"
warning: LF will be replaced by CRLF in index.html

Qué ha pasado: No es un error: es Windows avisando de que cambia los saltos de línea del fichero al guardarlo.

Cómo se arregla: Nada. Puedes seguir tranquilamente.

Los cinco conceptos (esto sí te lo explico yo)

Lo importante de hoy no son los comandos —esos los pregunta cada uno a su IA—, es entender qué está pasando. Esto es lo que no puede hacer nadie por ti:

Repositorio«la carpeta con memoria»

Tu proyecto convertido en historia: una carpeta donde cada guardado queda registrado con autor, fecha y mensaje. Todo el trabajo del curso vivirá en repositorios.

Commit«un guardado con título»

Una foto de tu proyecto en un momento exacto, con un mensaje que dice qué cambió y por qué. Commits pequeños y frecuentes: uno por cosa, nunca «cosas varias».

Push / Pull«sincronizar con la nube»

Tu portátil y GitHub son dos copias de la misma historia. Push sube lo tuyo; pull baja lo que te falta. Nada mágico: dos películas sincronizadas.

Rama (branch)«un universo paralelo»

Una copia de tu historia donde experimentas sin tocar la principal. Si la idea funciona, se fusiona (merge); si no, se borra y no ha pasado nada.

Merge«la decisión final»

Traer una rama terminada a la principal. Es lo que harás al final de hoy cuando decidas qué diseño gana — y lo que haréis por PR en el proyecto en grupo.

Por qué esto importa fuera del aula: cuando varias personas trabajan en el mismo repositorio —así funciona cualquier empresa de software—, nadie experimenta en la rama principal. Cada uno abre su rama, y lo bueno se fusiona. Hoy lo vas a practicar a escala individual: dos diseños tuyos conviviendo sin pisarse.

Las misiones de hoy

1 Tu cuenta de GitHub

Crea tu cuenta en github.com con un usuario profesional: es lo primero que verá cualquiera de ti después del currículum, así que ni motes ni números random. Completa el perfil: foto o avatar serio y una bio de una línea («Estudiante de 1º DAM, IES Simarro. Construyo X»). Apúntate bien tu nombre de usuario: es la mitad de lo que te va a pedir la terminal dentro de un rato.

✔ Cómo compruebas que está logrado: Entras en github.com y ves tu perfil con nombre, avatar y bio. Ese enlace (github.com/tuusuario) es ya parte de tu marca personal.

¿Problemas de registro o verificación? Es la única misión donde puede ayudarte una persona del centro si el correo del instituto te lo pone difícil: dímelo.

2 Git en tu portátil: identidad y llave

Comprueba que tienes Git con git --version (si no responde, instálalo: esto sí puedes preguntárselo a la IA). Después deja hechas las dos cosas de las secciones de arriba: la configuración global con tu nombre y el correo de tu cuenta de GitHub, y tu token de acceso personal generado y copiado en sitio seguro. Esta es la misión donde los comandos vienen escritos: úsalos, pero léelos antes de pegarlos.

✔ Cómo compruebas que está logrado: git config --global --list enseña tu nombre y tu correo, y ese correo es uno de los que tienes en GitHub. Tienes el token guardado y sabes decir, sin mirar, en qué se diferencia de tu contraseña.

Si el portátil no es tuyo, configura la identidad dentro de tu repo (sin --global) y usa el helper que olvida la credencial en una hora.

3 Tu primer repositorio, enlazado a tu web

Crea un repositorio nuevo llamado mi-web, público. Después tienes que hacer algo más fino que «subir ficheros»: enlazar la carpeta que ya tienes en el portátil (tu web del viernes) para que ese repositorio local pertenezca a GitHub, y subirla. Ahí hay conceptos nuevos (git init, remote, push) — pregunta a la IA del centro cómo enlazar una carpeta local existente con un repo recién creado y hazlo con sus instrucciones tecleadas por ti.

✔ Cómo compruebas que está logrado: Abres tu repo en el navegador y ves index.html, style.css y tu JS, no solo el README. Y en tu portátil, git status responde sin error: es un repo.

Consejo: crea el repositorio vacío, SIN marcar «Add a README». Te ahorras el rechazo del primer push que tienes explicado en los errores.

4 Commits honestos

Haz hoy como mínimo tres commits con mensajes que expliquen el porqué («añadida sección de contacto», «hero: dos columnas y foto», «parche: menú móvil»). Pregunta a tu IA cómo preparar el commit (qué ficheros se añaden) y cómo escribir el mensaje. Nada de «actualizo», «cambios» o «asdfgh».

maingit initgit add .git commit -m "hero con mi nombre"git commit -m "menú móvil"git commit -m "footer limpio"a1b2c3d«hero con mi nombre»7c4d9e2«menú para el móvil»3f8a1b5«footer más limpio»HEADcada commit apunta al anterior: eso es la cadena

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Cada commit es una bola nueva enganchada a la anterior, y HEAD siempre apunta a la última. Pulsa cualquier bola o comando. Misión 4.
✔ Cómo compruebas que está logrado: Pestaña Commits de tu repo: tres entradas con mensajes que se entienden solos dentro de seis meses, cada una con su autor y su fecha. Y tu avatar al lado de cada una: si sale un muñeco gris, tienes mal el user.email.

5 La máquina del tiempo

Ahora vas a romper algo a propósito: cambia un color o borra un bloque de la web, déjalo feo. Después vuelve a la versión anterior usando el historial —pregunta a tu IA dos formas de hacerlo (la interfaz web y la terminal)— y usa la que te atrevas. Si el mensaje del commit es honesto, sabes exactamente a qué punto volver.

reset · borras el futurogit reset --hard HEAD~1main«hero»«menú móvil»HEAD«lo rompí»si ya hiciste push, no lo usesrevert · sin borrar nadagit revert HEADmain«hero»«menú móvil»«lo rompí»«anula lo roto»la historia queda entera

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

reset borra el futuro; revert lo conserva y añade una bola que anula. Si ya hiciste push, usa revert. Misión 5.
✔ Cómo compruebas que está logrado: Tu web vuelve a verse como antes del destrozo, y sabes explicar qué comando o botón usaste y qué hizo.

6 Dos ramas, dos diseños

Crea dos ramas con dos diseños distintos de tu web: por ejemplo diseño-oscuro y diseño-minimal. En cada una cambia lo visual (colores, tipografía, disposición del hero) sin tocar la otra. Pregúntale a tu IA cómo crear una rama, cómo cambiarte de rama, y cómo guardar (commit) en la rama en la que estás. Cambiar de rama y refrescar la web es el momento «wow» de la sesión: la misma carpeta, dos webs distintas según el universo paralelo en el que te pongas.

maindiseno-moradoa1b2c3d«hero y menú listos»git checkout -b diseno-moradogit commit -m "paleta morada"7c4d9e2«todo en morado»git checkout maingit commit -m "footer limpio"3f8a1b5«footer limpio»HEADmisma carpeta, dos webs distintas según la rama

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

main (azul) sigue tranquila; tu experimento (morado) nace de la misma bola y crece en paralelo. Misión 6.
✔ Cómo compruebas que está logrado: git branch te lista al menos tres (main + tus dos diseños). Al cambiarte de rama, la web de tu navegador cambia de diseño sin que copies nada. Y en GitHub, el selector de ramas muestra las dos.

7 Elige tu diseño y fusiónalo a main

Mira los dos diseños con calma, enséñaselos a quien tengas al lado… y decide cuál gana. Fusiona la rama elegida a main (la fusión puede hacerse desde la terminal o desde la propia interfaz de GitHub — pregunta a tu IA y usa la que quieras). La otra rama se puede borrar: fue un experimento, y eso es exactamente para lo que sirven las ramas.

maindiseno-moradoa1b2c3d«base común»git commit -m "paleta morada"7c4d9e2«todo en morado»git checkout maingit merge --no-ff diseno-moradogit branch -d diseno-moradoe1f2a3b«commit de fusión»HEADmain ya tiene tu diseño ganador dentro

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Dos líneas de historia y una bola de fusión con dos flechas de entrada: así entra tu diseño ganador. Misión 7.
✔ Cómo compruebas que está logrado: main muestra tu diseño ganador, y el historial de commits de main cuenta la historia: trabajo → dos experimentos → decisión.

8 Bonus: el repo de otro (ensayo del proyecto en grupo)

Si terminas: entra en el repo de un compañero, crea una rama ahí, mejora un detalle pequeño (un texto, un color), y abre una Pull Request a su main explicando qué propones. Es el ensayo general del proyecto final en grupo: allí todo cambio pasará por una PR revisada.

mainmejora-textoa1b2c3d«la web de Ana»git checkout -b mejora-texto7c4d9e2«mejoro un texto»git push -u origin mejora-textoPull request #1Ana la revisa y la apruebagit merge --squash mejora-textoe1f2a3b«Merge PR #1»la PR es una rama que pide permiso para entrar

Desliza el diagrama de lado para verlo entero

Toca una bola o un comando del diagrama y aquí te cuento qué hizo Git en ese paso.

Así trabajan los equipos: nadie entra en main sin que otra persona revise la PR. Misión 8 (bonus).
✔ Cómo compruebas que está logrado: Tu compañero tiene una PR abierta con tu nombre, la revisa, la aprueba y la fusiona (o te pide un cambio, aún mejor).

Cómo preguntar bien a la IA del centro

La calidad de lo que te responda depende de cómo lo preguntes. La fórmula: contexto + objetivo + restricción. Una plantilla para arrancar:

Estoy en 1º DAM usando Git por primera vez. Tengo una carpeta en mi portátil con index.html, style.css y script.js, y un repositorio vacío recién creado en GitHub llamado mi-web.
Explícame paso a paso, comando a comando, qué debo escribir en la terminal para enlazar mi carpeta local con ese repositorio de GitHub y subir la web. Para cada comando, dime en una línea qué hace y qué veré si ha salido bien.
Trampas que os vais a encontrar hoy (y que tenéis que saber leer): working tree dirty (tienes cambios sin commitear — Git no te deja cambiar de rama hasta que guardas o descartas), conflicto de merge (dos ramas tocaron lo mismo: Git pide un humano que decida), 3 commits behind/ahead (tus dos copias de la historia se desincronizaron: pull o push). Detrás de cada uno hay uno de los cinco conceptos — si lo reconoces, ya sabes qué hacer.

Checklist de entrega (antes de salir)

☐ Cuenta con perfil profesional · ☐ git config --global --list con tu nombre y el correo de tu cuenta de GitHub · ☐ Token generado, guardado, y sabes por qué no es tu contraseña
☐ Repo mi-web con tu web dentro (no solo el README) · ☐ ≥ 3 commits con mensajes que explican el porqué, y con tu avatar al lado
☐ Has roto algo y has vuelto atrás con el historial · ☐ Dos ramas con dos diseños que cambian al moverte entre ellas · ☐ Tu diseño elegido fusionado en main
☐ Sabes explicar con tus palabras: qué es Git y qué es GitHub, repo, commit, push/pull, rama y merge — porque en la defensa del proyecto me basta con pedirte: «muéstrame tus commits y cuéntame la historia de tu web».
Regla de oro del curso desde hoy: si funciona, se sube —push sagrado. Tu GitHub es la copia de seguridad de todo el curso: acabarlo significa tener literalmente tu historia en commits. Y cuando mañana usemos agentes de código, el agente podrá escribir el comando; la decisión de cuándo se guarda y por qué seguirá siendo tuya.

Para la próxima sesión