Tema 29: Colaborar en un proyecto real
Una colaboración comienza por entender el problema. Una issue describe una tarea, un fallo o una mejora y permite acordar qué se espera. No es una rama ni un commit. Lee también las instrucciones del proyecto sobre mensajes, pruebas y revisión antes de proponer cambios.
Si no puedes escribir en el original, crea un fork y clónalo como en el tema 10. origin apuntará a tu copia. Puedes añadir upstream para el repositorio original: es otro nombre convencional de remoto, no una palabra reservada. git fetch upstream actualiza sus referencias locales para inspeccionar su avance.
Crea una rama breve, realiza una tarea concreta y usa mensajes claros. Publica esa rama en tu fork con push -u. Una pull request es una propuesta del servicio que compara una rama de origen con un destino y reúne descripción, conversación y comprobaciones. Abrirla no integra automáticamente el cambio.
La revisión puede pedir ajustes. Normalmente puedes añadir otro commit y publicarlo en la misma rama; la propuesta se actualiza. Mantén una conversación sobre el cambio y verifica que la revisión y las comprobaciones corresponden a la versión más reciente, no a un commit anterior.
Cuando todo esté listo, una persona con permisos puede integrar siguiendo la estrategia del proyecto. Luego actualizas tus referencias desde el original. No supongas que publicar en el fork actualiza directamente la rama principal del equipo.
El laboratorio representa GitHub con botones. «Solicitar revisión» pide añadir Revisado al documento; después debes crear y publicar otro commit. «Ejecutar comprobaciones» comprueba el texto publicado; «Integrar propuesta» exige que la corrección sea posterior a la revisión. Todo ocurre en memoria, sin crear issues, cuentas ni propuestas reales.
Práctica real opcional: usa repositorios propios o un proyecto que acepte contribuciones, consulta sus instrucciones, prepara un cambio pequeño y revisa el destino antes de abrir una propuesta. La documentación de colaboración de GitHub describe las acciones del servicio. No necesitas realizar un envío externo para obtener la puntuación de este curso.
Comandos para probar #
1git clone https://github.com/alumno/proyecto.git 2git remote add upstream https://github.com/equipo/proyecto.git 3git fetch upstream 4git switch -c feature/saludo 5git push -u origin feature/saludo
Error que conviene evitar #
Confundir el fork con el original, abrir la propuesta hacia una rama equivocada o dar por válidas comprobaciones de una versión anterior a la última publicación.
Laboratorio local #
Prueba los comandos y observa qué cambia. Puedes reiniciar sin guardar una entrega. Los retos evaluables y el cuestionario están en las actividades de este tema.
Git / práctica local
De fork a propuesta integrada
Acciones de GitHub simulado
Estas acciones solo cambian el laboratorio; no contactan con GitHub.
Aplicar edición cambia el archivo; git add lo prepara.
Historial de commits
Las líneas conectan los commits con sus padres. Los commits que ya no tienen una referencia también permanecen visibles en este laboratorio.
Comparar trabajo, índice y HEAD
Trabajo
(archivo ausente)
Índice (staging)
(archivo ausente)
HEAD
(archivo ausente)
TERMINAL
Sesión local preparada. Escribe help para consultar los comandos de este tema.
Comandos disponibles y límites
git --version · git config --global <clave> [valor] git init · git status git add <archivo | .> · git commit -m "mensaje" · git log git log --oneline · git switch <rama> (antes: checkout) git restore [--staged] <archivo> · git commit --amend [-m "mensaje" | --no-edit] git switch --detach <commit> · HEAD · HEAD~1 git diff [--staged | <commit> <commit>] git remote [-v] · git remote add <nombre> <URL> · git remote get-url <nombre> · git remote set-url <nombre> <URL> git clone <URL> git push [-u] <remoto> <rama> ssh-keygen -t ed25519 · ssh -T git@github.com (ficticios) git branch [nombre] · git branch -m <nombre> · git branch -d <rama> · git switch -c <rama> git merge [--ff-only] <rama> git merge --no-ff <rama> · git log --graph --all --decorate git merge --abort · editar conflicto, git add y git commit -m "mensaje" git config --global alias.st status · git st git tag [nombre] · git tag -a <nombre> -m "mensaje" · git tag -n · git push origin <tag> git reset --soft|--mixed|--hard <commit> · git reflog git stash push [-u] [-m "mensaje"] · list · show · apply · pop · drop git rebase <rama> · git rebase --continue · git rebase --abort git grep [-n] <texto> [revisión] git rebase -i <base> (editar lista) · git merge --squash <rama> git bisect start · good [commit] · bad [commit] · reset git fetch <remoto> · git pull --ff-only|--rebase|--no-rebase · git revert <commit> · git push --force-with-lease help · clear
Sesión en memoria: recargar descarta la práctica. Doscientas acciones como máximo. Dos archivos editables de hasta 250 líneas. Diez ramas como máximo. Diez entradas de stash como máximo. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo. grep busca texto literal. La lista interactiva conserva el orden y agrupa todos los commits seleccionados.
Resumen
- Ayuda a acordar el objetivo antes de implementar.
- Reúne el cambio, la revisión y las comprobaciones.
- Es un remoto configurado por ti, no una palabra reservada.
- Confundir el fork con el original, abrir la propuesta hacia una rama equivocada o dar por válidas comprobaciones de una versión anterior a la última publicación.