Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Git Cheat Sheet

Git Cheat Sheet

Tabla de contenidos

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

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

Establece el nombre que estará asociado a tus commits

CODE
$ 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

CODE
$ git init [project-name]

Crea un nuevo repositorio local con el nombre especificado

CODE
$ 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

CODE
$ git rm [file]

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

CODE
$ git rm --cached [file]

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

CODE
$ 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

CODE
*.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

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

Enumera todos los archivos ignorados en este proyecto

Guardar fragmentos

Almacena y restaura cambios incompletos

CODE
$ git stash

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

CODE
$ git stash pop

Restaura los archivos guardados más recientemente

CODE
$ git stash list

Enumera todos los grupos de cambios que estan guardados temporalmente

CODE
$ git stash drop

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

Efectuar cambios

Revisa cambios y crea un commit

CODE
$ git status

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

CODE
$ git diff

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

CODE
$ git add [file]

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

CODE
$ git diff --staged

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

CODE
$ git reset [file]

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

CODE
$ 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

CODE
$ git branch

Enumera todas las ramas en el repositorio actual

CODE
$ git branch [branch-name]

Crea una nueva rama

CODE
$ git switch -c [branch-name]

Cambia a la rama especificada y actualiza el directorio activo

CODE
$ git merge [branch-name]

Combina el historial de la rama especificada con la rama actual

CODE
$ git branch -d [branch-name]

Borra la rama especificada

Logs

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

CODE
$ git log

Enumera el historial de versiones para la rama actual

CODE
$ git log --follow [file]

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

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

Muestra las diferencias de contenido entre dos ramas

CODE
$ git show [commit]

Produce metadatos y cambios de contenido del commit especificado

Rehacer commits

Borra errores y elabora un historial de reemplazo

CODE
$ git reset [commit]

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

CODE
$ 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

CODE
$ git fetch [bookmark]

Descarga todo el historial del marcador del repositorio

CODE
$ git merge [bookmark]/[branch]

Combina la rama del marcador con la rama local actual

CODE
$ git push [alias] [branch]

Sube todos los commits de la rama local a GitHub

CODE
$ 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:

CODE
<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:

CODE
feat(auth): add JWT authentication
  • Corrección de Error:
CODE
fix(user): resolve crash on login failure
  • Documentación:
SQL
docs(readme): update installation instructions
  • Refactor:
CODE
refactor(api): improve API response time
  • Cambio Breaking:
JAVA
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.
CODE