DEV Community

Erick Quinteros
Erick Quinteros

Posted on

GitHub

¿Qué problema resuelve Git?

Imagina que tienes un archivo:
main.py
Hoy funciona.
Mañana haces cambios.
Pasado mañana algo deja de funcionar.
Sin Git:

  • No sabes qué cambió.
  • No sabes cuándo cambió.
  • No sabes quién lo cambió.
  • No puedes volver fácilmente atrás. Git resuelve eso. Piensa en Git como una máquina del tiempo para tu código. --- ## Conceptos fundamentales ### Repositorio Un repositorio es el proyecto completo. Ejemplo: repositorio_proyecto Contiene:
README.md
src/
test/
docs/
scripts/
Enter fullscreen mode Exit fullscreen mode

Git almacena el historial de todos esos archivos.

Commit

Un commit es una fotografía del proyecto.
Ejemplo:

Commit #1
    README creado
Enter fullscreen mode Exit fullscreen mode

Luego:

Commit #2
    Terraform inicial
Enter fullscreen mode Exit fullscreen mode

Luego:

Commit #3
    Bucket S3 agregado
Enter fullscreen mode Exit fullscreen mode

Cada commit permite regresar a ese estado.
Piensa en ellos como puntos de guardado de un videojuego.

Branch

Una branch (rama) es una línea de trabajo independiente.
Ejemplo:
main
contiene v1 estable
Quieres agregar S3
Creas:
feature/s3-bucket
Trabajas ahí. Si algo sale mal:
main
permanece intacto.

¿Por qué no trabajar directamente sobre main?

Porque main debe ser siempre estable.
Regla profesional:
Nunca desarrollar directamente en main

## Flujo profesional
### main
Código estable.
### develop
Integración.
### feature/*
Desarrollo.
Enter fullscreen mode Exit fullscreen mode

Visualmente:

main
 │
 └── develop
        │
        ├── feature/s3
        │
        ├── feature/budget
        │
        └── feature/iam
Enter fullscreen mode Exit fullscreen mode

Crear SSH

¿Por qué?
Para evitar escribir usuario y contraseña constantemente.
Generar clave:

ssh-keygen -t ed25519 -C "correo@gmail.com"
Enter fullscreen mode Exit fullscreen mode

Resultado:

C:\Users\TuUsuario\.ssh\
Enter fullscreen mode Exit fullscreen mode

Archivos:

id_ed25519
id_ed25519.pub
Enter fullscreen mode Exit fullscreen mode

Nunca compartir id_ed25519
Sí compartir id_ed25519.pub

Agregar SSH a GitHub

Copiar:

type $env:USERPROFILE\.ssh\id_ed25519.pub
Enter fullscreen mode Exit fullscreen mode

Ir a GitHub:

Settings
↓
SSH and GPG Keys
↓
New SSH Key
Enter fullscreen mode Exit fullscreen mode

Pegar contenido.

Verificar conexión

ssh -T git@github.com
Enter fullscreen mode Exit fullscreen mode

Respuesta esperada:

Hi usuario!
You've successfully authenticated.
Enter fullscreen mode Exit fullscreen mode

Crear repositorio

En GitHub:

repositorio_proyecto
Enter fullscreen mode Exit fullscreen mode

Opciones:
✔ Private
✔ README
✔ License

Clonar repositorio

Con GitHub Desktop:

File
↓
Clone Repository
Enter fullscreen mode Exit fullscreen mode

Seleccionar:

repositorio_proyecto
Enter fullscreen mode Exit fullscreen mode

Ubicación:
C:\Projects
Resultado:
C:\Projects\repositorio_proyecto

Abrir en VS Code

Dentro del directorio:
code .

Crear rama develop

Primera vez:

git checkout -b develop

Subir:

git push -u origin develop

¿Por qué?
Porque main será producción.
develop será integración.

Subir cambios

git push

Pull Request

GitHub:

feature/feature-branch
↓
develop
Enter fullscreen mode Exit fullscreen mode

¿Por qué?
Permite revisar antes de integrar.

Merge

Cuando la revisión es aprobada:

feature/feature-branch
↓
develop
Enter fullscreen mode Exit fullscreen mode

Posteriormente:

develop
↓
main
Enter fullscreen mode Exit fullscreen mode

Branch Protection

Configurar en GitHub:

Settings
↓
Branches
↓
Add Rule
Enter fullscreen mode Exit fullscreen mode

Para:
main
Activar:
✔ Require Pull Request
✔ Require Status Checks
✔ Require Branch Up To Date
¿Por qué?
Evita errores accidentales.

Flujo diario del proyecto

Cada vez que trabajes:

git checkout develop
git pull
Enter fullscreen mode Exit fullscreen mode

Crear nueva rama:
git checkout -b feature/nombre
Trabajar.
Guardar:

git add .
git commit -m "feat: descripcion"
Enter fullscreen mode Exit fullscreen mode

Subir git push

Crear Pull Request.
Integrar.
Eliminar rama.

Mentalidad correcta

No pienses:

Git guarda archivos
Enter fullscreen mode Exit fullscreen mode

Piensa:

Git guarda historia
Enter fullscreen mode Exit fullscreen mode

La historia del proyecto será tan valiosa como el código mismo porque permitirá entender:

  • ¿Qué se hizo?
  • ¿Cuándo se hizo?
  • ¿Por qué se hizo?
  • ¿Quién lo hizo?
  • Cómo volver atrás si algo falla.

Esa disciplina será especialmente importante.

Further Reading

Check out the other articles in this series:

  • GIT:
  • GIT Referencia Rápida:
  • GIT cheatsheet:
  • GitHub:

Top comments (0)