GitHub desde local
1. Requisitos previos
Sección titulada «1. Requisitos previos»Antes de subir un proyecto a GitHub, verificar:
- Tener una cuenta de GitHub.
- Tener Git instalado.
- Tener acceso al repositorio remoto.
- Tener definido si el repositorio será privado o público.
- Tener claro el nombre del repositorio.
- Tener un archivo
.gitignoreadecuado para el stack del proyecto. - No subir archivos sensibles:
.env, claves privadas, tokens, certificados, backups, dumps de base de datos o configuraciones con credenciales.
Validar instalación:
git --versionConfigurar identidad local:
git config --global user.name "Tu Nombre"git config --global user.email "tu.email@empresa.com"Ver configuración actual:
git config --list2. Estructura recomendada antes de subir
Sección titulada «2. Estructura recomendada antes de subir»Ejemplo base:
mi-proyecto/ src/ docs/ tests/ README.md .gitignoreArchivos mínimos recomendados:
README.md.gitignorePara proyectos .NET:
bin/obj/.vs/*.user*.suoappsettings.*.json!appsettings.example.jsonPara proyectos Node/Astro:
node_modules/dist/.env.env.*!.env.examplePara proyectos generales:
.DS_StoreThumbs.db*.log3. Caso A — Subir un proyecto local nuevo a GitHub
Sección titulada «3. Caso A — Subir un proyecto local nuevo a GitHub»Este caso aplica cuando tienes una carpeta local que todavía no está versionada con Git.
3.1 Entrar al proyecto
Sección titulada «3.1 Entrar al proyecto»cd ruta/del/proyecto3.2 Inicializar Git
Sección titulada «3.2 Inicializar Git»git init3.3 Crear .gitignore
Sección titulada «3.3 Crear .gitignore»Crear o validar el archivo:
touch .gitignoreAgregar exclusiones según el tipo de proyecto.
3.4 Revisar archivos detectados
Sección titulada «3.4 Revisar archivos detectados»git status3.5 Agregar archivos al staging
Sección titulada «3.5 Agregar archivos al staging»git add .3.6 Crear primer commit
Sección titulada «3.6 Crear primer commit»git commit -m "Initial commit"3.7 Crear repositorio en GitHub
Sección titulada «3.7 Crear repositorio en GitHub»Desde GitHub:
- Crear un nuevo repository.
- Definir nombre.
- Elegir private o public.
- No inicializar con README si ya existe localmente.
- Copiar la URL del repositorio.
Ejemplo HTTPS:
https://github.com/ORG_OR_USER/NOMBRE_REPO.gitEjemplo SSH:
git@github.com:ORG_OR_USER/NOMBRE_REPO.git3.8 Vincular repositorio remoto
Sección titulada «3.8 Vincular repositorio remoto»git remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.gitValidar remote:
git remote -v3.9 Renombrar rama principal a main
Sección titulada «3.9 Renombrar rama principal a main»git branch -M main3.10 Subir a GitHub
Sección titulada «3.10 Subir a GitHub»git push -u origin mainEl parámetro -u deja vinculada la rama local main con origin/main, por lo que luego bastará con usar:
git push4. Caso B — Subir un proyecto local que ya tiene Git
Sección titulada «4. Caso B — Subir un proyecto local que ya tiene Git»Este caso aplica cuando la carpeta ya tiene .git.
4.1 Verificar estado
Sección titulada «4.1 Verificar estado»git status4.2 Verificar remote actual
Sección titulada «4.2 Verificar remote actual»git remote -vSi no existe remote:
git remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.gitSi existe pero apunta a otro origen:
git remote set-url origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git4.3 Confirmar rama actual
Sección titulada «4.3 Confirmar rama actual»git branchSi se quiere usar main:
git branch -M main4.4 Subir cambios
Sección titulada «4.4 Subir cambios»git push -u origin main5. Caso C — Clonar un repositorio existente
Sección titulada «5. Caso C — Clonar un repositorio existente»Este caso aplica cuando el proyecto ya existe en GitHub y se quiere traer a local.
5.1 Clonar
Sección titulada «5.1 Clonar»HTTPS:
git clone https://github.com/ORG_OR_USER/NOMBRE_REPO.gitSSH:
git clone git@github.com:ORG_OR_USER/NOMBRE_REPO.git5.2 Entrar al proyecto
Sección titulada «5.2 Entrar al proyecto»cd NOMBRE_REPO5.3 Verificar estado
Sección titulada «5.3 Verificar estado»git status5.4 Instalar dependencias
Sección titulada «5.4 Instalar dependencias»Depende del stack.
Node/Astro:
npm install.NET:
dotnet restore6. Flujo normal de actualización
Sección titulada «6. Flujo normal de actualización»Este es el flujo diario recomendado para trabajar localmente y subir cambios.
6.1 Actualizar la rama local antes de trabajar
Sección titulada «6.1 Actualizar la rama local antes de trabajar»git pullSi el equipo usa rebase:
git pull --rebase6.2 Revisar cambios locales
Sección titulada «6.2 Revisar cambios locales»git status6.3 Ver diferencias
Sección titulada «6.3 Ver diferencias»git diff6.4 Agregar cambios
Sección titulada «6.4 Agregar cambios»Todos los archivos:
git add .Archivo específico:
git add ruta/archivo.ext6.5 Crear commit
Sección titulada «6.5 Crear commit»git commit -m "Descripción clara del cambio"Ejemplos de mensajes:
Add catalog fragment generationFix R2 asset path validationUpdate deployment documentationRefactor publisher service6.6 Subir cambios
Sección titulada «6.6 Subir cambios»git push7. Trabajo con ramas
Sección titulada «7. Trabajo con ramas»Para no trabajar directamente sobre main, usar ramas por feature, fix o documentación.
7.1 Crear rama nueva
Sección titulada «7.1 Crear rama nueva»git checkout -b feature/nombre-cambioEjemplos:
git checkout -b feature/catalog-fragmentsgit checkout -b fix/r2-prefix-validationgit checkout -b docs/github-guide7.2 Subir rama al remoto
Sección titulada «7.2 Subir rama al remoto»git push -u origin feature/nombre-cambio7.3 Cambiar de rama
Sección titulada «7.3 Cambiar de rama»git checkout mainO:
git switch main7.4 Ver ramas
Sección titulada «7.4 Ver ramas»Locales:
git branchLocales y remotas:
git branch -a8. Pull Request recomendado
Sección titulada «8. Pull Request recomendado»Para equipos, lo ideal es no subir directamente a main.
Flujo recomendado:
crear rama→ hacer cambios→ commit→ push→ abrir Pull Request→ revisión→ merge a mainVentajas:
- Permite revisión de código.
- Reduce errores en
main. - Deja historial claro.
- Facilita integración con CI/CD.
- Permite bloquear merges si fallan tests.
9. Actualizar una rama con cambios de main
Sección titulada «9. Actualizar una rama con cambios de main»Si estás trabajando en una rama y main avanzó:
git checkout maingit pullgit checkout feature/nombre-cambiogit merge mainAlternativa con rebase:
git checkout feature/nombre-cambiogit fetch origingit rebase origin/mainUsar rebase solo si el equipo está alineado con esa práctica.
10. Resolver conflictos básicos
Sección titulada «10. Resolver conflictos básicos»Si Git informa conflictos:
git statusAbrir los archivos marcados y buscar:
<<<<<<< HEADcambios locales=======cambios remotos>>>>>>> ramaEditar el archivo dejando la versión correcta.
Luego:
git add archivo-con-conflicto.extgit commitSi era un rebase:
git rebase --continuePara cancelar un merge conflict:
git merge --abortPara cancelar un rebase conflict:
git rebase --abort11. Buenas prácticas de commits
Sección titulada «11. Buenas prácticas de commits»Un commit debe representar una unidad lógica de cambio.
Bueno:
Add R2 fragment paginationFix XSS sanitization in catalog fragmentsDocument Cloudflare operation queueEvitar:
changesupdatefixcosas variasRecomendación:
tipo: descripción cortaEjemplos:
feat: add catalog fragment paginationfix: sanitize product descriptionsdocs: add github workflow guiderefactor: simplify publisher service12. Archivos que no deben subirse
Sección titulada «12. Archivos que no deben subirse»Nunca subir:
.env.env.localappsettings.Production.json*.pfx*.pem*.key*.bak*.sqlnode_modules/bin/obj/dist/logs/En lugar de subir credenciales, crear archivos ejemplo:
.env.exampleappsettings.example.jsonEjemplo:
CLOUDFLARE_ACCOUNT_ID=CLOUDFLARE_API_TOKEN=R2_BUCKET=13. Autenticación con GitHub
Sección titulada «13. Autenticación con GitHub»GitHub ya no usa contraseña tradicional para operaciones Git por HTTPS. Se debe usar:
- GitHub CLI
- Personal Access Token
- SSH key
Opción A — HTTPS con token
Sección titulada «Opción A — HTTPS con token»Remote:
git remote set-url origin https://github.com/ORG_OR_USER/NOMBRE_REPO.gitAl pedir password, usar un Personal Access Token.
Opción B — SSH
Sección titulada «Opción B — SSH»Generar clave:
ssh-keygen -t ed25519 -C "tu.email@empresa.com"Ver clave pública:
cat ~/.ssh/id_ed25519.pubAgregar esa clave pública en GitHub.
Cambiar remote a SSH:
git remote set-url origin git@github.com:ORG_OR_USER/NOMBRE_REPO.gitProbar conexión:
ssh -T git@github.com14. Comandos útiles
Sección titulada «14. Comandos útiles»Ver estado:
git statusVer historial:
git log --oneline --graph --decorate --allVer remotes:
git remote -vVer rama actual:
git branch --show-currentTraer cambios sin mezclar:
git fetchDescartar cambios de un archivo:
git checkout -- ruta/archivo.extO con Git moderno:
git restore ruta/archivo.extGuardar cambios temporalmente:
git stashRecuperar cambios guardados:
git stash pop15. Recuperar errores comunes
Sección titulada «15. Recuperar errores comunes»Commit con mensaje incorrecto
Sección titulada «Commit con mensaje incorrecto»Si todavía no se hizo push:
git commit --amend -m "Nuevo mensaje"Agregué un archivo que no debía
Sección titulada «Agregué un archivo que no debía»Si todavía no se hizo commit:
git restore --staged archivo.extHice commit pero olvidé un archivo
Sección titulada «Hice commit pero olvidé un archivo»git add archivo.extgit commit --amend --no-editQuiero volver a un commit anterior
Sección titulada «Quiero volver a un commit anterior»Ver historial:
git log --onelineCrear un commit que revierte otro:
git revert HASH_DEL_COMMITEvitar git reset --hard si el cambio ya fue compartido con otros.
16. Flujo recomendado para proyectos de Interzone
Sección titulada «16. Flujo recomendado para proyectos de Interzone»Para iniciar proyecto
Sección titulada «Para iniciar proyecto»1. Crear carpeta local.2. Inicializar Git.3. Crear README.md.4. Crear .gitignore.5. Primer commit.6. Crear repositorio privado en GitHub.7. Vincular remote.8. Push a main.Para trabajar día a día
Sección titulada «Para trabajar día a día»1. git pull2. crear rama feature/*3. desarrollar4. git status5. git add6. git commit7. git push8. Pull Request9. revisión10. merge a mainPara documentación
Sección titulada «Para documentación»Usar ramas:
docs/nombre-documentoEjemplo:
git checkout -b docs/sites-platform-architecture17. Checklist antes de hacer push
Sección titulada «17. Checklist antes de hacer push»Antes de subir cambios:
[ ] Ejecuté git status[ ] Revisé git diff[ ] No estoy subiendo credenciales[ ] No estoy subiendo bin/, obj/, node_modules/ o dist/[ ] El .gitignore está correcto[ ] El proyecto compila o pasa pruebas básicas[ ] El commit tiene un mensaje claro[ ] Estoy en la rama correcta18. Checklist antes de merge a main
Sección titulada «18. Checklist antes de merge a main»[ ] Pull Request revisado[ ] Conflictos resueltos[ ] Tests ejecutados[ ] Build validado[ ] No hay secretos en el diff[ ] Documentación actualizada si aplica[ ] Aprobación del responsable19. Comandos rápidos
Sección titulada «19. Comandos rápidos»Subir proyecto nuevo
Sección titulada «Subir proyecto nuevo»cd mi-proyectogit initgit add .git commit -m "Initial commit"git branch -M maingit remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.gitgit push -u origin mainActualizar proyecto existente
Sección titulada «Actualizar proyecto existente»git pullgit statusgit add .git commit -m "Descripción del cambio"git pushCrear rama y subirla
Sección titulada «Crear rama y subirla»git checkout -b feature/nueva-funcionalidadgit add .git commit -m "Add new feature"git push -u origin feature/nueva-funcionalidad20. Reglas de oro
Sección titulada «20. Reglas de oro»No subir secretos.No trabajar directo en main si hay equipo.No hacer push sin revisar git status.No mezclar muchos cambios distintos en un solo commit.No ignorar conflictos.No usar reset --hard sin entender el impacto.No subir archivos generados salvo que el proyecto lo requiera.Resumen final
Sección titulada «Resumen final»GitHub debe usarse como repositorio central de código y documentación. El flujo recomendado es trabajar con ramas, commits pequeños, Pull Requests y revisión antes de integrar a main.
La regla operativa principal es:
main debe representar una versión estable del proyecto.