Ir al contenido

GitHub desde local

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 .gitignore adecuado 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:

Ventana de terminal
git --version

Configurar identidad local:

Ventana de terminal
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@empresa.com"

Ver configuración actual:

Ventana de terminal
git config --list

Ejemplo base:

mi-proyecto/
src/
docs/
tests/
README.md
.gitignore

Archivos mínimos recomendados:

README.md
.gitignore

Para proyectos .NET:

bin/
obj/
.vs/
*.user
*.suo
appsettings.*.json
!appsettings.example.json

Para proyectos Node/Astro:

node_modules/
dist/
.env
.env.*
!.env.example

Para proyectos generales:

.DS_Store
Thumbs.db
*.log

3. 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.

Ventana de terminal
cd ruta/del/proyecto
Ventana de terminal
git init

Crear o validar el archivo:

Ventana de terminal
touch .gitignore

Agregar exclusiones según el tipo de proyecto.

Ventana de terminal
git status
Ventana de terminal
git add .
Ventana de terminal
git commit -m "Initial commit"

Desde GitHub:

  1. Crear un nuevo repository.
  2. Definir nombre.
  3. Elegir private o public.
  4. No inicializar con README si ya existe localmente.
  5. Copiar la URL del repositorio.

Ejemplo HTTPS:

https://github.com/ORG_OR_USER/NOMBRE_REPO.git

Ejemplo SSH:

git@github.com:ORG_OR_USER/NOMBRE_REPO.git
Ventana de terminal
git remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git

Validar remote:

Ventana de terminal
git remote -v
Ventana de terminal
git branch -M main
Ventana de terminal
git push -u origin main

El parámetro -u deja vinculada la rama local main con origin/main, por lo que luego bastará con usar:

Ventana de terminal
git push

4. 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.

Ventana de terminal
git status
Ventana de terminal
git remote -v

Si no existe remote:

Ventana de terminal
git remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git

Si existe pero apunta a otro origen:

Ventana de terminal
git remote set-url origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git
Ventana de terminal
git branch

Si se quiere usar main:

Ventana de terminal
git branch -M main
Ventana de terminal
git push -u origin main

5. 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.

HTTPS:

Ventana de terminal
git clone https://github.com/ORG_OR_USER/NOMBRE_REPO.git

SSH:

Ventana de terminal
git clone git@github.com:ORG_OR_USER/NOMBRE_REPO.git
Ventana de terminal
cd NOMBRE_REPO
Ventana de terminal
git status

Depende del stack.

Node/Astro:

Ventana de terminal
npm install

.NET:

Ventana de terminal
dotnet restore

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»
Ventana de terminal
git pull

Si el equipo usa rebase:

Ventana de terminal
git pull --rebase
Ventana de terminal
git status
Ventana de terminal
git diff

Todos los archivos:

Ventana de terminal
git add .

Archivo específico:

Ventana de terminal
git add ruta/archivo.ext
Ventana de terminal
git commit -m "Descripción clara del cambio"

Ejemplos de mensajes:

Add catalog fragment generation
Fix R2 asset path validation
Update deployment documentation
Refactor publisher service
Ventana de terminal
git push

Para no trabajar directamente sobre main, usar ramas por feature, fix o documentación.

Ventana de terminal
git checkout -b feature/nombre-cambio

Ejemplos:

Ventana de terminal
git checkout -b feature/catalog-fragments
git checkout -b fix/r2-prefix-validation
git checkout -b docs/github-guide
Ventana de terminal
git push -u origin feature/nombre-cambio
Ventana de terminal
git checkout main

O:

Ventana de terminal
git switch main

Locales:

Ventana de terminal
git branch

Locales y remotas:

Ventana de terminal
git branch -a

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 main

Ventajas:

  • 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.

Si estás trabajando en una rama y main avanzó:

Ventana de terminal
git checkout main
git pull
git checkout feature/nombre-cambio
git merge main

Alternativa con rebase:

Ventana de terminal
git checkout feature/nombre-cambio
git fetch origin
git rebase origin/main

Usar rebase solo si el equipo está alineado con esa práctica.


Si Git informa conflictos:

Ventana de terminal
git status

Abrir los archivos marcados y buscar:

<<<<<<< HEAD
cambios locales
=======
cambios remotos
>>>>>>> rama

Editar el archivo dejando la versión correcta.

Luego:

Ventana de terminal
git add archivo-con-conflicto.ext
git commit

Si era un rebase:

Ventana de terminal
git rebase --continue

Para cancelar un merge conflict:

Ventana de terminal
git merge --abort

Para cancelar un rebase conflict:

Ventana de terminal
git rebase --abort

Un commit debe representar una unidad lógica de cambio.

Bueno:

Add R2 fragment pagination
Fix XSS sanitization in catalog fragments
Document Cloudflare operation queue

Evitar:

changes
update
fix
cosas varias

Recomendación:

tipo: descripción corta

Ejemplos:

feat: add catalog fragment pagination
fix: sanitize product descriptions
docs: add github workflow guide
refactor: simplify publisher service

Nunca subir:

.env
.env.local
appsettings.Production.json
*.pfx
*.pem
*.key
*.bak
*.sql
node_modules/
bin/
obj/
dist/
logs/

En lugar de subir credenciales, crear archivos ejemplo:

.env.example
appsettings.example.json

Ejemplo:

CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=
R2_BUCKET=

GitHub ya no usa contraseña tradicional para operaciones Git por HTTPS. Se debe usar:

  • GitHub CLI
  • Personal Access Token
  • SSH key

Remote:

Ventana de terminal
git remote set-url origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git

Al pedir password, usar un Personal Access Token.

Generar clave:

Ventana de terminal
ssh-keygen -t ed25519 -C "tu.email@empresa.com"

Ver clave pública:

Ventana de terminal
cat ~/.ssh/id_ed25519.pub

Agregar esa clave pública en GitHub.

Cambiar remote a SSH:

Ventana de terminal
git remote set-url origin git@github.com:ORG_OR_USER/NOMBRE_REPO.git

Probar conexión:

Ventana de terminal
ssh -T git@github.com

Ver estado:

Ventana de terminal
git status

Ver historial:

Ventana de terminal
git log --oneline --graph --decorate --all

Ver remotes:

Ventana de terminal
git remote -v

Ver rama actual:

Ventana de terminal
git branch --show-current

Traer cambios sin mezclar:

Ventana de terminal
git fetch

Descartar cambios de un archivo:

Ventana de terminal
git checkout -- ruta/archivo.ext

O con Git moderno:

Ventana de terminal
git restore ruta/archivo.ext

Guardar cambios temporalmente:

Ventana de terminal
git stash

Recuperar cambios guardados:

Ventana de terminal
git stash pop

Si todavía no se hizo push:

Ventana de terminal
git commit --amend -m "Nuevo mensaje"

Si todavía no se hizo commit:

Ventana de terminal
git restore --staged archivo.ext
Ventana de terminal
git add archivo.ext
git commit --amend --no-edit

Ver historial:

Ventana de terminal
git log --oneline

Crear un commit que revierte otro:

Ventana de terminal
git revert HASH_DEL_COMMIT

Evitar 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»
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.
1. git pull
2. crear rama feature/*
3. desarrollar
4. git status
5. git add
6. git commit
7. git push
8. Pull Request
9. revisión
10. merge a main

Usar ramas:

docs/nombre-documento

Ejemplo:

Ventana de terminal
git checkout -b docs/sites-platform-architecture

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 correcta

[ ] Pull Request revisado
[ ] Conflictos resueltos
[ ] Tests ejecutados
[ ] Build validado
[ ] No hay secretos en el diff
[ ] Documentación actualizada si aplica
[ ] Aprobación del responsable

Ventana de terminal
cd mi-proyecto
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/ORG_OR_USER/NOMBRE_REPO.git
git push -u origin main
Ventana de terminal
git pull
git status
git add .
git commit -m "Descripción del cambio"
git push
Ventana de terminal
git checkout -b feature/nueva-funcionalidad
git add .
git commit -m "Add new feature"
git push -u origin feature/nueva-funcionalidad

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.

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.