Jhonatan Pinheiro
Cargando página...
Jhonatan Pinheiro
Cargando página...
Jhonatan Pinheiro
Cargando página...
La diferencia entre Git y GitHub, el flujo con ramas y Pull Requests, issues, Actions, releases, seguridad y cómo usar la plataforma como portafolio.
Mucha gente aprende Git y GitHub como si fueran la misma cosa. No lo son — y entender la diferencia es el primer paso para usar bien ambos.
Puedes usar Git toda la vida sin GitHub. Lo que pierdes es todo lo que ocurre entre personas.
Git resuelve el versionado, pero deja tres preguntas abiertas:
format-patch y correo — funciona, pero viene de la época en que Linux se desarrollaba por lista de correo.GitHub responde a las tres: un repositorio remoto como fuente de la verdad, el pull request como forma estandarizada de proponer un cambio y Actions para automatizar la verificación y el despliegue.
Un repositorio ("repo") es el proyecto: código, historial, documentación y configuración.
Tres archivos definen la primera impresión de tu repositorio:
README.md # qué es, cómo ejecutarlo, cómo contribuir — se convierte en la portada del repositorio
.gitignore # lo que nunca debe versionarse (node_modules, .env, build)
LICENSE # sin licencia, "público" no significa "libre para usar"Un repositorio público sin licencia es, jurídicamente, "todos los derechos reservados". Si quieres que usen tu código, elige una licencia — MIT y Apache 2.0 son las más comunes.
Y el aviso que vale por todos: nunca hagas commit de un secreto. Un token, una contraseña o una clave privada en un repositorio público son rastreados por bots en minutos. Si ya pasó, revoca la credencial antes que nada — borrar el commit no basta, porque ya fue leída.
El ciclo que usa prácticamente todo equipo:
# 1. Trae el estado actual de la rama principal
git switch main
git pull
# 2. Crea una rama para tu tarea
git switch -c feat/filtro-por-assunto
# 3. Trabaja en commits pequeños y descriptivos
git add .
git commit -m "feat(blog): filtro por assunto na listagem"
# 4. Publica la rama
git push -u origin feat/filtro-por-assunto
# 5. Abre el Pull Request (desde el sitio o desde el gh CLI)
gh pr create --fill¿Por qué una rama en lugar de hacer commit directo en main? Porque main debería estar siempre publicable. Todo cambio pasa por un lugar donde puede revisarse, probarse y deshacerse sin afectar a quien depende de él.
GitHub tiene un cliente de línea de comandos que te evita ir al navegador:
gh auth login # autentica la máquina
gh repo create meu-projeto --private # crea el repositorio
gh repo clone usuario/projeto
gh pr create --fill # abre un PR con título/cuerpo de los commits
gh pr list
gh pr checkout 42 # baja el PR de otra persona para probarlo
gh pr review 42 --approve
gh pr merge 42 --squash --delete-branch
gh issue create --title "Bug no filtro" --body "Passos para reproduzir..."
gh run list # ejecuciones de Actions
gh run watch # sigue la ejecución actualEl Pull Request (PR) es el corazón de GitHub. Dice: "tengo estos cambios en esta rama y quiero integrarlos en aquella; revisadlos".
Un PR reúne en un solo lugar:
Qué hace bueno a un PR:
| Práctica | Por qué |
|---|---|
| Pequeño (menos de ~400 líneas) | Un PR gigante recibe un "LGTM" sin que nadie lo lea de verdad |
| Un asunto por PR | Facilita revisar, revertir y entender después |
| Título y descripción claros | El revisor necesita saber el porqué, no solo el qué |
| Captura o vídeo cuando es visual | Ahorra rondas de "no entendí qué cambió" |
| CI en verde antes de pedir revisión | No gastes el tiempo de otra persona con un error de lint |
Tres formas de fusionar, y cuándo usar cada una:
main. Lo habitual en la mayoría de los equipos: historial limpio, un commit por funcionalidad.En la configuración del repositorio defines las reglas de main:
Es lo que convierte la buena intención en proceso. Sin eso, el "quedamos en abrir siempre un PR" dura hasta el primer viernes apretado.
Las issues son las tareas, los bugs y las ideas del proyecto — cada una con su discusión, responsable, etiquetas y hito.
# En el cuerpo del commit o del PR, esto cierra la issue automáticamente al fusionar:
git commit -m "fix: corrige contraste do tema claro
Closes #42"Recursos que vale la pena conocer:
bug, enhancement, good first issue. La última es la invitación clásica para nuevos colaboradores..github/ISSUE_TEMPLATE y PULL_REQUEST_TEMPLATE.md estandarizan lo que necesitas recibir.Actions ejecuta tareas automáticamente cuando algo ocurre en el repositorio: un push, un PR abierto, una etiqueta creada, una hora del día.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
verificar:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run buildCon eso, todo PR llega al revisor ya con lint, pruebas y build verificados. Los usos más comunes:
main.on: schedule) — rutinas periódicas, como comprobar enlaces rotos o actualizar dependencias.Dos consejos que evitan dolor: usa secrets para las credenciales (nunca escribas un token en el YAML) y fija la versión de las actions (@v4, o mejor, el hash del commit) para que la actualización de un tercero no te sorprenda.
gh release create v1.2.0 --generate-notes
gh release upload v1.2.0 ./dist/app.zipGitHub incorpora varias capas de protección — y la mayoría solo hay que activarlas:
Y de tu lado: usa SSH o un token con el alcance mínimo, nunca la contraseña; y prefiere los fine-grained tokens, que dan acceso a repositorios concretos en lugar de a toda la cuenta.
# Clave SSH: genérala, añádela al agente y registra la pública en GitHub
ssh-keygen -t ed25519 -C "voce@email.com"
ssh-add ~/.ssh/id_ed25519
gh ssh-key add ~/.ssh/id_ed25519.pub
ssh -T git@github.com # prueba la conexiónPara quien está construyendo una carrera, el perfil de GitHub suele leerse antes que el currículum. Lo que de verdad pesa:
Sobre los "cuadraditos verdes": la constancia está bien, pero nadie serio contrata por eso. Un commit diario sin sustancia se identifica fácilmente.
| Plataforma | Destaca en |
|---|---|
| GitHub | La mayor comunidad, el mejor ecosistema, Actions e integraciones |
| GitLab | CI/CD muy completo y una opción autoalojada madura |
| Bitbucket | Fuerte integración con Jira y el resto de Atlassian |
| Azure DevOps | Entornos corporativos Microsoft, con boards y pipelines |
| Gitea / Forgejo | Ligero y autoalojado — el "GitHub de casa" |
Para un proyecto personal, open source y portafolio, GitHub es la elección por defecto por su alcance. Para una empresa con exigencia de datos on-premise, GitLab y Gitea autoalojados suelen entrar en la conversación.
Git guarda la historia de tu código. GitHub es donde esa historia se encuentra con otras personas — para revisar, automatizar, publicar y colaborar.
Si estás empezando, el camino más corto para sacarle provecho real:
good first issue en un proyecto que uses y manda tu primer PR.El quinto paso es el que cambia de nivel: es cuando GitHub deja de ser una copia de seguridad de tu código y se convierte en el lugar donde trabajas con el resto del mundo.