Uso de GitHub en la Cátedra
Flujos de trabajo, Pull Requests y herramientas de colaboración en la UNRN
Esta guía detalla cómo se utiliza la plataforma GitHub como entorno de entrega, corrección y discusión en la materia. Se asume que comprendés los conceptos explicados en la guía de Git básico.
1. Creación y configuración de la cuenta¶
Para las actividades de la materia, debés contar con una cuenta activa en GitHub.
Registro inicial¶
Visitá github.com y creá una cuenta
Elegí un username que sea profesional (va a ser parte de tu identidad online)
Verificá tu email
Configurá tu perfil con foto y descripción
Crea tu primer repositorio remoto¶
Ahora que ya sabés usar git clone - Clonar un repositorio existente, git add - Preparar cambios, git commit - Confirmar cambios, y git push - Subir cambios, podés conectar tu trabajo local con GitHub. Tenés dos opciones principales:
1 2 3 4 5 6 7 8 9 10 11 12 13# Opción 1: Crear repositorio vacío en GitHub primero # 1. Click en "New repository" en github.com # 2. Ingresá nombre, descripción y configuración # 3. Clonar localmente: git clone https://github.com/tu-usuario/mi-proyecto.git cd mi-proyecto # Crear archivos y hacer primer commit echo "# Mi Proyecto" > README.md git add README.md git commit -m "Initial commit" git push origin main
1 2 3 4 5 6 7# Opción 2: Subir repositorio local existente # Crear repositorio vacío en GitHub (sin README) # Luego conectar tu repo local: git remote add origin https://github.com/tu-usuario/mi-proyecto.git git branch -M main git push -u origin main
2. Autenticación y clonación de repositorios¶
Para interactuar de forma segura con los servidores de GitHub desde tu terminal local sin ingresar tus credenciales en cada operación, debés configurar un método de autenticación.
Opción A: Autenticación por Github CLI (recomendada)¶
Esta opción es la más sencilla y recomendada, ya que la herramienta oficial de GitHub se encarga de automatizar todo el proceso, incluyendo la generación y registro de claves criptográficas si no contás con ellas.
Instalar GitHub CLI: Si aún no lo tenés en tu sistema, seguí las instrucciones de la sección de Instalación de GitHub CLI.
Iniciar el proceso de autenticación ejecutando en tu terminal:
gh auth loginSeguir el flujo interactivo en la terminal:
What account do you want to log into? Seleccioná
GitHub.com.What is your preferred protocol for Git operations? Elegí
SSH(recomendado) oHTTPS.Si seleccionaste SSH:
Generate a new SSH key to upload to your GitHub account? Seleccioná
Yes(si no tenés una clave previa) o elegí una existente de la lista para subirla automáticamente.Enter a passphrase for your new SSH key (optional): Presioná Enter para dejarla sin contraseña o ingresá una de tu preferencia.
Title for your SSH key: Ingresá un título descriptivo (ej.
Notebook UNRN).
How would you like to authenticate GitHub CLI? Seleccioná
Login with a web browser.
Completar la autenticación en el navegador:
La terminal te mostrará un código único de 8 caracteres (ej:
WDAS-12A4) y te pedirá presionar Enter para abrir tu navegador web.Pegá el código en la página de GitHub que se abrirá automáticamente e iniciá sesión con tus credenciales.
Verificar el estado: Una vez autorizado, regresá a la terminal y verificá que la conexión es correcta con:
gh auth status
Opción B: Autenticación por SSH¶
Consiste en generar un par de claves criptográficas en tu computadora local y asociar la clave pública a tu cuenta de GitHub.
Generar la clave SSH en tu terminal:
ssh-keygen -t ed25519 -C "tu_email@unrn.edu.ar"(Presioná Enter en todas las solicitudes para usar la ruta por defecto y omitir la contraseña de la clave, si así lo preferís).
Iniciar el agente SSH y añadir la clave:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519Copiar la clave pública:
cat ~/.ssh/id_ed25519.pubCopiá el contenido completo impreso en pantalla.
Registrar la clave en GitHub:
Ingresá a GitHub ⇾ Perfil (esquina superior derecha) ⇾ Settings ⇾ SSH and GPG keys.
Hacé clic en New SSH key, asignale un título (ej: “Notebook Cátedra”) y pegá la clave pública en el campo correspondiente.

Página de configuración de claves SSH en GitHub.
Clonar el repositorio: Una vez configurada la clave, cloná tus proyectos utilizando la dirección SSH:
git clone git@github.com:INGCOM-UNRN-P1/tu-repositorio.git
Opción C: Token de Acceso Personal (PAT)¶
Si preferís usar HTTPS en lugar de SSH, GitHub requiere un Token de Acceso Personal (PAT) como contraseña de autenticación.
Generalo en: Settings ⇾ Developer settings ⇾ Personal access tokens ⇾ Tokens (classic).
Seleccioná los permisos mínimos de
repoy guardá el token en un lugar seguro. Deberás introducirlo en lugar de tu contraseña tradicional al realizar operaciones de subida (git push).
3. El dia a dia con GitHub¶
1 2 3 4 5 6 7 8 9 10 11 12# 1. Comenzar el día - sincronizar con remoto git pull origin main # 2. Trabajar localmente # ... hacer cambios en archivos ... git add . git commit -m "Implementar nueva funcionalidad" # 3. Subir cambios al final del día git push origin main # 4. Verificar en GitHub web que los cambios están
Mantener historial sincronizado¶
1 2 3 4 5 6 7# Antes de empezar a trabajar siempre: git status # verificar estado local git pull origin main # traer últimos cambios # Después de cada sesión de trabajo: git log --oneline -5 # revisar commits locales git push origin main # subir cambios
4. El flujo de trabajo con Pull Requests (PR)¶
En la cátedra, cada entrega o corrección de trabajos prácticos se gestiona mediante un Pull Request (Petición de Integración). Un PR es una propuesta de cambios que permite comparar tu código de entrega contra la rama principal de control.
Proceso de envío de una entrega¶
Crear una rama local para la tarea actual, partiendo siempre desde
mainactualizada:git checkout main git pull origin main git checkout -b entrega-tp1Realizar los cambios en el código fuente, documentar las interfaces con Doxygen (ver la Guía de Doxygen) y verificar que el proyecto compile sin advertencias.
Subir la rama al servidor remoto:
git commit -am "Finaliza la resolución del TP1" git push origin entrega-tp1Abrir el Pull Request:
Ingresá al repositorio del proyecto en la web de GitHub.
Visualizarás un banner indicando que se subió una rama nueva. Hacé clic en Compare & pull request.
Completá el título del PR con tu nombre y el número de TP.
Creá el PR apuntando tu rama de entrega (
entrega-tp1) hacia la rama principal (main).

Banner de aviso para iniciar un nuevo Pull Request.
5. Revisión y respuesta a comentarios¶
Una vez abierto el Pull Request, los docentes de la cátedra revisarán el código. Las correcciones se realizan directamente sobre las líneas de código afectadas en el PR.
Interacción durante la revisión¶
Comentarios de línea: Si recibís observaciones sobre alguna línea en particular, se abrirá un hilo de discusión en la pestaña Conversation o Files changed del PR.
Corrección y actualización: Para corregir lo solicitado, no es necesario abrir un nuevo PR. Simplemente debés realizar los cambios correspondientes en tu rama local, hacer el commit y subirlo:
# Luego de corregir el error detectado en el editor: git commit -am "Corrige la validación de límites en la estructura" git push origin entrega-tp1El Pull Request se actualizará automáticamente con tus nuevos commits.
Responder y resolver: Una vez implementada la corrección, respondé al comentario del docente en GitHub y marcá la conversación como Resolve conversation si corresponde.

Hilo de discusión y revisión de código sobre una línea específica en un Pull Request.
6. Consultas con GitHub Discussions¶
Para canalizar las dudas teóricas y metodológicas de la cursada, la cátedra utiliza la pestaña Discussions del repositorio institucional en lugar del correo electrónico.
Antes de preguntar: Usá la barra de búsqueda para verificar si otro compañero ya realizó la misma consulta y si ya fue resuelta.
Estructura de la consulta:
Seleccioná la categoría correspondiente (ej: Q&A, TPs, Teoría).
Proporcioná títulos descriptivos. Evitá títulos genéricos como “Ayuda con el TP”. Preferí “Error de segmentación al liberar memoria dinámica en TP2”.
Adjuntá bloques de código legibles usando la sintaxis de código Markdown.
7. Reporte de fallas mediante GitHub Issues¶
Los Issues se reservan exclusivamente para reportar fallas de infraestructura del entorno, errores ortográficos o conceptuales detectados en las guías y apuntes, o problemas con las pruebas unitarias provistas por la cátedra.
Para reportar un error del apunte:
Ingresá a la sección Issues del repositorio del apunte.
Hacé clic en New issue.
Describí la falla indicando el archivo afectado y sugiriendo la corrección correspondiente.
8. GitHub CLI (gh)¶
GitHub CLI (gh) es la herramienta oficial de línea de comandos que te permite
interactuar directamente con GitHub desde tu terminal local. Esto acelera
significativamente el flujo de trabajo al evitar tener que abrir el navegador
web para realizar tareas administrativas comunes.
Explorando repositorios en GitHub¶
Antes de pasar a la terminal, recordá que la interfaz web de GitHub ofrece pestañas esenciales como:
Code: Para navegar archivos, directorios y ver el historial de commits.
Issues: Para reportar bugs o gestionar tareas pendientes.
Pull Requests: Para revisar, discutir y fusionar contribuciones.
Actions: Para monitorear el estado de los flujos de integración continua (CI/CD).
Settings: Para administrar la configuración del repositorio, colaboradores y claves de acceso.
¿Qué es GitHub CLI?¶
gh te permite realizar casi cualquier acción que harías en la interfaz web de
GitHub, pero directamente desde la terminal, como clonar repositorios de la
cátedra, crear pull requests, listar issues o verificar el estado de tus
entregas.
Instalación de GitHub CLI¶
Linux (Ubuntu/Debian)¶
1 2 3 4 5 6 7 8# Método oficial curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh # Método alternativo con snap sudo snap install gh
Linux (CentOS/RHEL/Fedora)¶
sudo dnf install ghmacOS¶
# Con Homebrew
brew install gh
# Con MacPorts
sudo port install ghWindows¶
1 2 3 4 5 6 7 8# Con winget winget install --id GitHub.cli # Con Chocolatey choco install gh # Con Scoop scoop install gh
Configuración inicial de GitHub CLI¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14# Autenticarse con GitHub gh auth login # Seguir el flujo interactivo: # 1. Elegir GitHub.com # 2. Elegir HTTPS o SSH # 3. Authenticarse con token o browser # 4. Elegir protocolo preferido # Verificar autenticación gh auth status # Ver configuración actual gh config list
Comandos esenciales de GitHub CLI¶
Gestión de repositorios¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19# Crear repositorio nuevo gh repo create mi-nuevo-proyecto --public --clone gh repo create mi-proyecto-privado --private --clone # Clonar repositorio gh repo clone usuario/proyecto gh repo clone https://github.com/usuario/proyecto.git # Ver información del repositorio actual gh repo view # Ver información de otro repositorio gh repo view microsoft/vscode # Listar tus repositorios gh repo list # Hacer fork de un repositorio gh repo fork usuario/proyecto --clone
Issues (problemas/tareas)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17# Listar issues del repositorio actual gh issue list # Ver issue específico gh issue view 123 # Crear nuevo issue gh issue create --title "Bug en validación" --body "Descripción detallada del problema" # Crear issue interactivo gh issue create # Cerrar issue gh issue close 123 # Asignar issue gh issue edit 123 --assignee @me
Pull Requests¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20# Listar pull requests gh pr list # Ver pull request específico gh pr view 456 # Crear pull request gh pr create --title "Nueva funcionalidad" --body "Descripción de cambios" # Crear PR interactivo gh pr create # Hacer checkout de un PR gh pr checkout 456 # Mergear pull request gh pr merge 456 # Cerrar pull request gh pr close 456
Releases¶
1 2 3 4 5 6 7 8 9 10 11# Listar releases gh release list # Ver release específico gh release view v1.0.0 # Crear release gh release create v1.0.0 --title "Primera versión" --notes "Cambios principales" # Descargar assets de release gh release download v1.0.0
Gists (snippets de código)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14# Crear gist público gh gist create archivo.py --public # Crear gist privado gh gist create archivo.py # Listar tus gists gh gist list # Ver gist específico gh gist view abc123def456 # Editar gist gh gist edit abc123def456
Workflows comunes con GitHub CLI¶
Flujo completo de nuevo proyecto¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16# 1. Crear repositorio y clonarlo gh repo create mi-proyecto --public --clone cd mi-proyecto # 2. Crear estructura inicial echo "# Mi Proyecto" > README.md echo "node_modules/" > .gitignore git add . git commit -m "Initial commit" git push # 3. Crear primer issue gh issue create --title "Setup inicial" --body "Configurar estructura del proyecto" # 4. Ver el repositorio en GitHub gh repo view --web
Contribuir a proyecto existente¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20# 1. Fork del proyecto gh repo fork usuario/proyecto --clone cd proyecto # 2. Crear rama para tu contribución git checkout -b mi-funcionalidad # 3. Hacer cambios y commit # ... editar archivos ... git add . git commit -m "Agregar nueva funcionalidad" # 4. Subir rama git push origin mi-funcionalidad # 5. Crear pull request gh pr create --title "Nueva funcionalidad" --body "Descripción detallada" # 6. Ver el PR en navegador gh pr view --web
Gestión de issues como tareas¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15# Crear lista de tareas para sprint gh issue create --title "Implementar autenticación" --label "feature" gh issue create --title "Agregar tests unitarios" --label "testing" gh issue create --title "Documentar API" --label "documentation" # Ver dashboard de issues gh issue list --state open # Trabajar en issue específico gh issue view 123 # ... hacer el trabajo ... git commit -m "Fix #123: implementar autenticación" # Cerrar issue automáticamente al hacer push git push
Integración con workflow diario¶
Alias útiles para GitHub CLI¶
1 2 3 4 5 6 7 8 9 10 11# Agregar aliases a tu .bashrc o .zshrc alias ghs="gh status" alias ghi="gh issue list" alias ghp="gh pr list" alias ghr="gh repo view" alias ghc="gh pr create" # O crear aliases de gh gh alias set prs "pr list" gh alias set issues "issue list" gh alias set repo "repo view"
Scripts de automatización¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14# Script para inicio de día #!/bin/bash echo "=== GitHub Dashboard ===" echo "Repositorio actual:" gh repo view echo -e "\nIssues abiertas:" gh issue list --limit 5 echo -e "\nPull requests pendientes:" gh pr list --limit 5 echo -e "\nStatus de Actions:" gh run list --limit 3
GitHub Pages - Hosting gratuito¶
GitHub Pages te permite hospedar sitios web estáticos directamente desde tu repositorio.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27# 1. Crear repositorio para GitHub Pages gh repo create mi-usuario.github.io --public --clone # 2. Crear sitio web simple cd mi-usuario.github.io cat > index.html << EOF <!DOCTYPE html> <html> <head> <title>Mi Portfolio</title> </head> <body> <h1>Bienvenido a mi sitio</h1> <p>Este sitio está hospedado en GitHub Pages</p> </body> </html> EOF # 3. Subir y activar GitHub Pages git add . git commit -m "Add initial website" git push # 4. Configurar GitHub Pages desde Settings o CLI gh api repos/:owner/:repo --method PATCH --field "has_pages=true" # 5. Tu sitio estará disponible en https://mi-usuario.github.io
Ejercicios prácticos con GitHub y CLI¶
Repositorios especiales de GitHub¶
GitHub tiene varios tipos de repositorios especiales que tienen funcionalidades únicas más allá del simple hosting de código. Conocer estos repositorios te permite aprovechar al máximo la plataforma y crear una presencia profesional sólida.
1. Repositorio de perfil (USERNAME/USERNAME)¶
El repositorio más importante para tu presencia online es el repositorio de perfil. Este es un repositorio especial que debe tener exactamente el mismo nombre que tu username de GitHub.
Características únicas:
El README.md se muestra automáticamente en tu página de perfil
Funciona como tu “carta de presentación” profesional
Es lo primero que ven los reclutadores y otros desarrolladores
Permite usar Markdown, imágenes, GIFs, y widgets interactivos
2. GitHub Pages (usuario.github.io)¶
Un repositorio llamado tu-usuario.github.io automáticamente se convierte en tu
sitio web personal.
Funcionalidades:
Hosting gratuito de sitios web estáticos
Dominio personalizado:
https://tu-usuario.github.ioSoporte para Jekyll (generador de sitios estáticos)
Perfect para portfolios, blogs, o documentación
3. Repositorios .github¶
Repositorios que empiezan con .github tienen funciones especiales:
.github: Plantillas de issues, pull requests, y configuración para toda tu cuenta.github.io: Alias para tu sitio de GitHub Pagestu-org/.github: Configuración por defecto para toda una organización
4. Gists especiales¶
Aunque no son repositorios tradicionales, los Gists también tienen características especiales:
Gists públicos: Se indexan en buscadores
Gists con nombre específico: Pueden embeberse fácilmente
Gists con múltiples archivos: Funcionan como mini-proyectos
Solution to Exercise 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185# 1. Verificar configuración de GitHub CLI gh auth status echo "Tu username actual de GitHub:" gh api user --jq '.login' # Guardar username en variable para reutilizar USERNAME=$(gh api user --jq '.login') echo "Creando repositorio de perfil para: $USERNAME" # 2. Crear repositorio especial de perfil # IMPORTANTE: el nombre debe ser exactamente igual a tu username gh repo create "$USERNAME" --public --clone --description "Mi repositorio de perfil profesional" cd "$USERNAME" # 3. Crear README.md profesional y completo cat > README.md << EOF # ¡Hola! 👋 Soy $(gh api user --jq '.name // .login') <div align="center"> <img src="https://readme-typing-svg.herokuapp.com?font=Fira+Code&size=22&pause=1000&color=2E9EF7¢er=true&vCenter=true&width=440&lines=Desarrollador+en+crecimiento;Apasionado+por+la+tecnolog%C3%ADa;Siempre+aprendiendo+algo+nuevo" alt="Typing SVG" /> </div> ## 🚀 Sobre mí - 🔭 **Actualmente trabajando en:** Proyectos de aprendizaje con Git y GitHub - 🌱 **Aprendiendo:** Control de versiones, desarrollo web, y mejores prácticas de código - **Preguntame sobre:** Git, GitHub, primeros pasos en programación - 📫 **Contacto:** [Mi email](mailto:$(gh api user --jq '.email // "tu-email@ejemplo.com"')) - ⚡ **Dato curioso:** Este README fue creado completamente desde la terminal usando Git y GitHub CLI ## 🛠️ Tecnologías y herramientas ### Lenguajes de programación     ### Herramientas de desarrollo     ## 📊 Estadísticas de GitHub <div align="center"> <img height="180em" src="https://github-readme-stats.vercel.app/api?username=$USERNAME&show_icons=true&theme=tokyonight&include_all_commits=true&count_private=true"/> <img height="180em" src="https://github-readme-stats.vercel.app/api/top-langs/?username=$USERNAME&layout=compact&langs_count=7&theme=tokyonight"/> </div> ## 🏆 GitHub Achievements <div align="center"> <img src="https://github-profile-trophy.vercel.app/?username=$USERNAME&theme=tokyonight&row=1&column=6&margin-h=8&margin-w=8&no-bg=false&no-frame=false&title=Commit,Repositories,PullRequest,Issues,Followers,Stars" alt="GitHub Trophies" /> </div> ## 📈 Actividad reciente <!--START_SECTION:activity--> <!--END_SECTION:activity--> ## Proyectos destacados ### 🔧 Repositorios principales - **[mi-portfolio](https://github.com/$USERNAME/mi-portfolio)** - Mi primer proyecto con Git y GitHub - **[aprendiendo-git](https://github.com/$USERNAME/aprendiendo-git)** - Ejercicios y práctica con control de versiones - **[proyectos-web](https://github.com/$USERNAME/proyectos-web)** - Colección de proyectos web básicos ### 🚧 En desarrollo - **Sitio web personal** - Portfolio online con GitHub Pages - **Blog técnico** - Compartiendo lo que aprendo - **Proyectos de práctica** - Ejercicios de programación y Git ## Encuéntrame en [](https://linkedin.com/in/tu-perfil) [](https://twitter.com/tu-usuario) [](mailto:$(gh api user --jq '.email // "tu-email@ejemplo.com"')) [](https://$USERNAME.github.io) ## Cita que me inspira > *"El control de versiones no es solo sobre código, es sobre la evolución de las ideas."* --- <div align="center"> <img src="https://komarev.com/ghpvc/?username=$USERNAME&color=blueviolet&style=flat-square&label=Visitantes+del+perfil" alt="Visitors" /> </div> <div align="center"> **¡Gracias por visitar mi perfil!** *Siempre abierto a nuevas oportunidades y colaboraciones* </div> EOF # 4. Crear archivo de configuración para GitHub Actions (opcional) mkdir -p .github/workflows cat > .github/workflows/update-readme.yml << EOF name: Update README on: schedule: - cron: '0 0 * * 0' # Actualizar cada domingo workflow_dispatch: jobs: update-readme: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Update activity uses: jamesgeorge007/github-activity-readme@master env: GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }} EOF # 5. Agregar .gitignore básico cat > .gitignore << EOF # Archivos temporales *.tmp *.log *~ # Archivos del sistema .DS_Store Thumbs.db # Backups *.backup EOF # 6. Flujo completo Git: add, commit, push echo "Agregando archivos al staging area..." git add . echo " Haciendo commit del perfil profesional..." git commit -m "Add professional profile README Features added: - Personal introduction with typing animation - Technology badges and skills section - GitHub statistics and achievement trophies - Project showcase and social links - Automated activity updates with GitHub Actions - Professional styling with emojis and alignment Technical implementation: - Markdown with HTML for enhanced formatting - External services integration (shields.io, vercel apps) - GitHub Actions workflow for dynamic content - Responsive design with proper image sizing - SEO-friendly structure with semantic headers Purpose: Professional online presence for networking and job applications" echo "Subiendo al repositorio remoto..." git push origin main # 7. Verificar resultado echo "" echo " ¡Repositorio de perfil creado exitosamente!" echo "" echo " Verificaciones:" echo "1. Repositorio en GitHub: https://github.com/$USERNAME/$USERNAME" echo "2. Tu perfil actualizado: https://github.com/$USERNAME" echo "3. Verificar con GitHub CLI:" gh repo view "$USERNAME" echo "" echo " Tu README ahora aparece en tu perfil de GitHub como una carta de presentación profesional." echo "[TIP] Tip: Actualizá regularmente este README con nuevos proyectos y habilidades." echo "" echo " Próximos pasos opcionales:" echo "- Crear repositorio $USERNAME.github.io para tu sitio web personal" echo "- Agregar más repositorios públicos para mostrar tu trabajo" echo "- Contribuir a proyectos open source para mejorar tus estadísticas" echo "- Configurar LinkedIn y otros perfiles para coincidir con tu GitHub"
Guía completa de repositorios especiales¶
Repositorio GitHub Pages (usuario.github.io)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55# Crear tu sitio web personal gh repo create "$USERNAME.github.io" --public --clone cd "$USERNAME.github.io" # Crear página web básica cat > index.html << EOF <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>$(gh api user --jq '.name // .login') - Portfolio</title> <style> body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.6; } .hero { text-align: center; padding: 50px 0; } .projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; } .project { border: 1px solid #ddd; padding: 20px; border-radius: 8px; } </style> </head> <body> <div class="hero"> <h1>¡Hola! Soy $(gh api user --jq '.name // .login')</h1> <p>Desarrollador en crecimiento, apasionado por la tecnología</p> </div> <section> <h2>Sobre mí</h2> <p>Estoy aprendiendo desarrollo web y control de versiones con Git y GitHub.</p> </section> <section> <h2>Proyectos</h2> <div class="projects"> <div class="project"> <h3>Mi Portfolio GitHub</h3> <p>Repositorio especial de perfil con información profesional</p> <a href="https://github.com/$USERNAME">Ver en GitHub</a> </div> </div> </section> </body> </html> EOF git add . git commit -m " Add personal website homepage" git push origin main echo " Tu sitio web estará disponible en: https://$USERNAME.github.io"
Repositorio de configuración (.github)¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62# Crear repositorio para templates y configuración gh repo create ".github" --public --clone cd ".github" # Template para issues mkdir -p .github/ISSUE_TEMPLATE cat > .github/ISSUE_TEMPLATE/bug_report.md << EOF --- name: Bug Report about: Reportar un error o problema title: '[BUG] ' labels: bug assignees: '' --- ## Descripción del bug Una descripción clara y concisa del problema. ## Pasos para reproducir 1. Ir a '...' 2. Hacer click en '....' 3. Scroll down a '....' 4. Ver error ## Comportamiento esperado Descripción clara de lo que esperabas que pasara. ## Capturas de pantalla (screenshots) Si es aplicable, agregá screenshots para ayudar a explicar el problema. ## Información del entorno - OS: [ej. macOS, Windows, Linux] - Browser: [ej. Chrome, Safari] - Versión: [ej. 22] EOF # Template para feature requests cat > .github/ISSUE_TEMPLATE/feature_request.md << EOF --- name: Feature Request about: Sugerir una nueva funcionalidad title: '[FEATURE] ' labels: enhancement assignees: '' --- ## ¿Tu feature request está relacionado a un problema? Una descripción clara y concisa del problema. Ej. Siempre me frustra cuando [...] ## Describe la solución que te gustaría Descripción clara y concisa de lo que querés que pase. ## Describe alternativas que consideraste Descripción clara y concisa de soluciones o features alternativas. ## Contexto adicional Agregá cualquier otro contexto o screenshots sobre el feature request. EOF git add . git commit -m "Add issue templates for better project management" git push origin main
Resumen de repositorios especiales¶
| Repositorio | Función | URL resultante |
|---|---|---|
username/username | Perfil README | Se muestra en github.com/username |
username.github.io | Sitio web personal | https://username.github.io |
.github | Templates y configuración | Aplicable a todos tus repos |
.github.io | Alias de GitHub Pages | Alternativa a username.github.io |
Buenas prácticas con GitHub¶
Repositorios públicos¶
README claro: Explicá qué hace tu proyecto y cómo usarlo
Licencia: Agregá un archivo LICENSE apropiado
Gitignore: Configuralo para tu lenguaje/framework
Releases: Usá tags para versiones estables
Issues templates: Facilita el reporte de problemas
Perfil profesional¶
Ya viste en el Exercise 3 cómo crear un repositorio de perfil profesional. Acá hay algunos consejos adicionales para maximizar su impacto:
1 2 3 4 5 6 7 8 9 10 11# El proceso completo está detallado en el ejercicio anterior # Puntos clave para un perfil efectivo: # 1. Información personal clara y profesional # 2. Tecnologías con badges visuales atractivos # 3. Estadísticas de GitHub dinámicas # 4. Enlaces a proyectos y redes sociales # 5. Diseño responsive y bien estructurado # Ver ejercicio completo: {ref}`ejercicio-repositorio-perfil` echo "Consulta el ejercicio anterior para el proceso completo paso a paso"
Elementos clave de un perfil profesional efectivo:
Header atractivo: Nombre, título, y animación de texto
Sección “Sobre mí”: Información personal y profesional
Tecnologías: Badges coloridos de lenguajes y herramientas
Estadísticas: GitHub stats automáticas y trophies
Proyectos: Enlaces a repositorios importantes
Contacto: Redes sociales y email profesional
Actualización regular: Mantener información actualizada
Colaboración efectiva¶
Commits descriptivos: Explicá el “qué” y el “por qué”
Issues claros: Usá templates y labels consistentemente
Pull requests pequeños: Cambios enfocados y revisables
Documentación: Mantené README y docs actualizadas
Troubleshooting común¶
Problemas de autenticación¶
1 2 3 4 5 6 7 8 9 10# Verificar autenticación actual gh auth status # Re-autenticar si hay problemas gh auth logout gh auth login # Verificar configuración de Git git config --global user.name git config --global user.email
Problemas con permisos¶
# Si tenés problemas de permisos, verificar:
gh repo view
gh auth status
# Para repositorios de organizaciones
gh auth refresh --scopes repo,org:readSincronización de cambios¶
# Si hay conflictos al hacer push
git status
git pull origin main
# Resolver conflictos si existen
git push origin main7. Temas conexos¶
Integración Continua (CI)¶
Cada vez que abrís un Pull Request o realizás un push a una rama de entrega,
se disparan flujos automáticos de comprobación (GitHub Actions). Estos procesos
se encargan de compilar tu proyecto bajo la suite de compiladores de la cátedra
y correr los tests automáticos.
Si el flujo termina de forma correcta, verás un tilde verde (✔).
Si falla, verás una cruz roja (❌). Hacé clic en los detalles del fallo para verificar qué tests no se superaron o qué error de compilación ocurrió en el servidor remoto.

Visualización del estado de los tests automatizados de integración continua en el Pull Request.