Git Cheat Sheet

En esta entrada, te adentrarás en el mundo de Git de manera gradual y completa. Desde la configuración básica de usuario hasta las complejidades de la gestión de ramas y la sincronización de repositorios, cada paso se presenta de manera clara y concisa.

Acompáñanos en este viaje mientras exploramos cómo configurar tu información de usuario, crear y clonar repositorios, manejar cambios, revisar historiales y sincronizar tu trabajo con repositorios remotos. Ya seas un principiante curioso o un desarrollador experimentado, esta guía te proporcionará los conocimientos necesarios para aprovechar al máximo Git en tu flujo de trabajo diario.

Git Configuracion

Configura la información del usuario para todos los respositorios locales

$ git config --global user.name "[name]"

Establece el nombre que estará asociado a tus commits

$ git config --global user.email "[email address]"

Establece el e-mail que estará asociado a sus commits

Crear repositorios

Inicializa un nuevo repositorio u obtiene uno de una URL existente

$ git init [project-name]

Crea un nuevo repositorio local con el nombre especificado

$ git clone [url]

Descarga un proyecto y toda su historial de versiones

Refactorización de archivos

Reubica y retira los archivos de los cuales se tiene una versión

$ git rm [file]

Borra el archivo del directorio activo y lo pone en el área de espera en un estado de eliminación

$ git rm --cached [file]

Retira el archivo del historial de control de versiones, pero preserva el archivo a nivel local

$ git mv [file-original] [file-renamed]

Cambia el nombre del archivo y lo prepara para ser guardado

Suprimir el seguimiento de cambios

Excluye los archivos temporales y las rutas

*.log
build/
temp-*

Un archivo de texto llamado .gitignore suprime la creación accidental de versiones para archivos y rutas que concuerdan con los patrones especificados

$ git ls-files --others --ignored --exclude-standard

Enumera todos los archivos ignorados en este proyecto

Guardar fragmentos

Almacena y restaura cambios incompletos

$ git stash

Almacena temporalmente todos los archivos modificados de los cuales se tiene al menos una versión guardada

$ git stash pop

Restaura los archivos guardados más recientemente

$ git stash list

Enumera todos los grupos de cambios que estan guardados temporalmente

$ git stash drop

Elimina el grupo de cambios más reciente que se encuentra guardado temporalmente

Efectuar cambios

Revisa cambios y crea un commit

$ git status

Enumera todos los archivos nuevos o modificados de los cuales se van a guardar cambios

$ git diff

Muestra las diferencias entre archivos que no se han enviado aún al área de espera

$ git add [file]

Guarda el estado del archivo en preparación para realizar un commit

$ git diff --staged

Muestra las diferencias del archivo entre el área de espera y la última versión del archivo

$ git reset [file]

Mueve el archivo del área de espera, pero preserva su contenido

$ git commit -m"[descriptive message]"

Registra los cambios del archivo permanentemente en el historial de versiones

Cambios grupales

Nombra una serie de commits y combina esfuerzos ya completados

$ git branch

Enumera todas las ramas en el repositorio actual

$ git branch [branch-name]

Crea una nueva rama

$ git switch -c [branch-name]

Cambia a la rama especificada y actualiza el directorio activo

$ git merge [branch-name]

Combina el historial de la rama especificada con la rama actual

$ git branch -d [branch-name]

Borra la rama especificada

Logs

Navega e inspecciona la evolución de los archivos de proyecto

$ git log

Enumera el historial de versiones para la rama actual

$ git log --follow [file]

Enumera el historial de versiones para el archivo, incluidos los cambios de nombre

$ git diff [first-branch]...[second-branch]

Muestra las diferencias de contenido entre dos ramas

$ git show [commit]

Produce metadatos y cambios de contenido del commit especificado

Rehacer commits

Borra errores y elabora un historial de reemplazo

$ git reset [commit]

Deshace todos los commits después de [commit], preservando los cambios localmente

$ git reset --hard [commit]

Desecha todo el historial y regresa al commit especificado

Sincronizar cambios

Registrar un marcador para un repositorio e intercambiar historial de versiones

$ git fetch [bookmark]

Descarga todo el historial del marcador del repositorio

$ git merge [bookmark]/[branch]

Combina la rama del marcador con la rama local actual

$ git push [alias] [branch]

Sube todos los commits de la rama local a GitHub

$ git pull

Descarga el historial del marcador e incorpora cambios

Semantic Commit Messages

1. ¿Qué son los Semantic Commit Messages?

Los Semantic Commit Messages son mensajes de confirmación estructurados que permiten a los desarrolladores entender rápidamente los cambios realizados en un proyecto. Se centran en la claridad y la coherencia, facilitando la generación de changelogs automáticos y la comprensión del historial de versiones.

2. Estructura del Mensaje de Confirmación

Un mensaje de commit semántico tiene la siguiente estructura:

<tipo>(<alcance>): <descripción>
<opcional: cuerpo>
<opcional: pie de página>
  • tipo: Indica el tipo de cambio realizado. Ejemplos comunes incluyen:
    • feat: Nueva funcionalidad
    • fix: Corrección de errores
    • docs: Cambios en la documentación
    • style: Cambios que no afectan la lógica del código (espacios en blanco, formato, etc.)
    • refactor: Cambios que no corrigen un error ni añaden una funcionalidad
    • perf: Cambios que mejoran el rendimiento
    • test: Añadir o modificar pruebas
    • build: Cambios que afectan el sistema de construcción o dependencias
    • ci: Cambios en los archivos de configuración de CI (integración continua)
    • chore: Cambios menores que no pertenecen a las categorías anteriores
  • alcance: Una descripción opcional del área afectada por el cambio (por ejemplo, component, module, etc.).
  • descripción: Un resumen breve y claro del cambio realizado. Debe ser conciso, con un máximo de 72 caracteres.
  • cuerpo: (opcional) Proporciona información adicional sobre el cambio, explicando el «por qué» y el «cómo».
  • pie de página: (opcional) Puede incluir información adicional como referencias a tickets de problemas, notas sobre cambios breaking o información relacionada.

Ejemplos de Mensajes de Confirmación

  • Nuevo Feature:

feat(auth): add JWT authentication
  • Corrección de Error:
fix(user): resolve crash on login failure
  • Documentación:
docs(readme): update installation instructions
  • Refactor:
refactor(api): improve API response time
  • Cambio Breaking:
BREAKING CHANGE: change user ID from int to UUID

Herramientas para Implementar Semantic Commit Messages

Para facilitar la adopción de esta convención, puedes utilizar herramientas que ayudan a estandarizar los mensajes de commit:

  • Commitlint: Ayuda a validar que los mensajes de commit sigan la convención definida.
  • Husky: Permite ejecutar scripts en ganchos de Git, como validar mensajes de commit antes de hacer un push.

5. Beneficios de Usar Semantic Commit Messages

  • Claridad: Facilita la comprensión del propósito de cada cambio.
  • Automatización: Permite generar changelogs automáticamente.
  • Colaboración: Mejora la comunicación entre los miembros del equipo sobre el estado del proyecto.
 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *