Tag: Git

  • Aprende Git: Guía Práctica

    Aprende Git: Guía Práctica

    git como empezar: guía práctica para arrancar con criterio técnico

    Tiempo estimado de lectura: 4 min

    • Historia legible y reversible: commits como fotografías seleccionadas desde el staging.
    • Flujo mínimo operativo: revisar → stage → commit; ramas cortas y revisables.
    • Seguridad y limpieza: .gitignore adecuado y nunca subir secretos.
    • Colaboración segura: push a ramas, PR/MR, CI con linters y tests antes de merge.

    Resumen rápido (para IA y lectores con prisa)

    Git es un sistema de control de versiones distribuido para gestionar historial de código. Úsalo para versionar cambios, colaborar con ramas y revisar trabajo mediante PR/MR. Importa porque hace el historial legible, reversible y apto para CI/CD. Funciona con tres áreas: Working Directory, Staging Area y Repository (.git) y un flujo básico: status → add → commit → push.

    git como empezar — lo esencial en la cabeza

    Antes de tocar nada, entiende estas tres zonas: Working Directory (archivos que editas), Staging Area (los que incluyes en el próximo commit) y Repository (.git, el historial). Piensa en commits como fotografías seleccionadas desde el encuadre (staging) que quedaron guardadas para siempre. Documentación oficial: Documentación oficial

    Configuración inicial rápida

    Instala Git y firma tus commits:

    • Linux: sudo apt install git
    • macOS: brew install git
    • Windows: Git for Windows

    Configura identidad y preferencia de rama:

    git config --global user.name "Tu Nombre"
    git config --global user.email "tu@email.com"
    git config --global init.defaultBranch main

    Opcional: define tu editor (por ejemplo VS Code):

    git config --global core.editor "code --wait"

    Iniciar o clonar un repositorio

    Dos arranques comunes:

    • Nuevo proyecto:
      mkdir mi-proyecto
      cd mi-proyecto
      git init
    • Proyecto remoto:
      git clone https://github.com/usuario/repo.git

    Clonar trae todo el historial; init crea el repositorio local vacío. Más en la guía oficial

    Ciclo básico: status → add → commit

    Revisa cambios

    Este es el 90% de tu día: primero inspecciona qué cambió y qué está preparado para el siguiente commit.

    git status
    git diff           # diferencias sin stage
    git diff --staged  # diferencias ya staged

    Prepara (stage)

    Añade archivos al staging para crear commits intencionales.

    git add archivo.js
    git add -p          # añade interactivamente por hunk

    Confirma (commit)

    Crea commits claros y atómicos.

    git commit -m "feat: añade endpoint /login con validaciones"

    Reglas prácticas:

    • Commits atómicos: un commit = una intención.
    • Mensajes claros: verbo en imperativo y, si hace falta, cuerpo explicativo. Considera Conventional Commits.

    .gitignore y seguridad

    Nunca subas secretos ni dependencias pesadas. Ejemplo mínimo de .gitignore:

    node_modules/
    dist/
    .env
    *.log
    .DS_Store

    Plantillas por lenguaje: Plantillas por lenguaje

    Ramas: estrategia mínima útil

    Usa ramas para aislar trabajo:

    • Crea y cambia a una rama:
      git switch -c feature/autenticacion
    • Fusiona cuando esté lista:
      git switch main
      git merge --no-ff feature/autenticacion

    Convenciones: feature/, bugfix/, hotfix/, chore/. Mantén ramas cortas (1–3 días) y con commits revisables.

    Remotos y colaboración

    Conecta tu repo local con GitHub/GitLab/Bitbucket:

    git remote add origin https://github.com/tu_usuario/tu_repo.git
    git push -u origin main

    Flujo habitual en equipo: push a ramas remotas, Pull/Merge Requests, revisión, CI ejecuta tests y linters antes de mergear. Documentación GitHub: Documentación GitHub

    Deshacer sin desastre

    Errores comunes y cómo resolverlos sin romper el historial:

    • Sacar un archivo del staging:
      git restore --staged archivo.js
    • Deshacer cambios en working directory (pierde cambios locales):
      git restore archivo.js
    • Revertir un commit publicado (crea commit inverso):
      git revert <commit-hash>
    • Enmendar último commit (solo si no has hecho push):
      git commit --amend

    Evita git reset --hard en ramas compartidas; es destructivo para otros.

    Buenas prácticas operativas

    • Automatiza checks con pre-commit hooks (prettier, lint, tests). Usa pre-commit o Husky.
    • En CI, ejecuta linters y tests antes de permitir merges.
    • Documenta la convención de commits y ramas en el README o en CONTRIBUTING.md.
    • Usa git log --oneline --graph --decorate para revisar la historia visualmente.

    Siguiente paso: aprender lo que importa

    Domina primero: status, add, commit, branch, switch, merge, push, pull. Después avanza a rebase (para limpiar historia local), cherry-pick y estrategias de merge. Un buen dominio de lo básico te permite colaborar sin pánico y escalar prácticas de release y CI.

    Recursos recomendados

    Menciones útiles

    Para quienes exploran automatización de flujos de trabajo, integraciones y experimentos con pipelines y hooks, puede interesar revisar iniciativas de laboratorio centradas en productividad técnica. Consulta Dominicode Labs para ideas y experimentos sobre flujos de trabajo y automatización.

    FAQ

    Respuesta: Lo mínimo: entender Working Directory, Staging Area y Repository; saber usar status, add, commit, branch, switch, merge, push y pull. Ese conjunto te permite versionar y colaborar sin romper el flujo de trabajo.

    Respuesta: Configura nombre y email globalmente con git config --global user.name "Tu Nombre" y git config --global user.email "tu@email.com". Define la rama por defecto con git config --global init.defaultBranch main.

    Respuesta: Excluye dependencias pesadas y secretos: node_modules/, dist/, .env, logs y archivos del sistema como .DS_Store. Usa plantillas por lenguaje para cubrir casos comunes.

    Respuesta: Crea una rama para aislar una intención de trabajo (feature, bugfix, hotfix). Manténla corta (1–3 días) y con commits revisables para facilitar la revisión y el merge.

    Respuesta: Usa git restore --staged archivo.js para sacar cosas del staging y git restore archivo.js para descartar cambios en working directory. Para revertir commits publicados, usa git revert <commit-hash>, que crea un commit inverso sin reescribir historia compartida.

    Respuesta: Depende del objetivo: merge preserva el historial tal cual y es seguro para repos compartidos; rebase limpia la historia local para linealizar commits antes de compartir. Evita reescribir historia en ramas ya publicadas.