Curso git nivel medio

Git se ha convertido en una herramienta esencial no solo en el desarrollo de software, sino también en la gestión de proyectos de código abierto, el manejo de grandes volúmenes de datos y la auditoría de la seguridad en repositorios. Aquí te detallo cómo utilizar Git en proyectos Open Source, gestionar grandes repositorios con Git LFS y asegurar los repositorios mediante auditorías y buenas prácticas de seguridad.


Git en proyectos Open Source

El desarrollo de proyectos Open Source (código abierto) se basa en la colaboración de múltiples desarrolladores que trabajan de manera distribuida en un repositorio público. Git, junto con plataformas como GitHub, GitLab y Bitbucket, es la herramienta más utilizada para gestionar estos proyectos, permitiendo que las personas colaboren mediante forks, pull requests, y sistemas de revisión de código.

Elementos clave en proyectos Open Source
  1. Repositorio público: Los proyectos de código abierto están alojados en repositorios públicos para que cualquiera pueda ver, clonar y contribuir al código. GitHub es la plataforma más popular para estos proyectos, pero GitLab y Bitbucket también son utilizados.

  2. Forks: Los desarrolladores que desean contribuir a un proyecto Open Source hacen un fork del repositorio principal. Esto crea una copia completa del proyecto en su propia cuenta, donde pueden hacer cambios sin afectar el proyecto original.

  3. Pull requests (PR): Una vez que un colaborador ha realizado cambios en su copia del proyecto (fork), puede abrir un pull request para que los mantenedores del proyecto revisen e integren sus cambios en el repositorio principal. Un buen PR debe incluir una descripción clara de los cambios y, a menudo, estar relacionado con un issue del proyecto.

  4. Gestión de issues: En proyectos Open Source, los issues se utilizan para rastrear errores, solicitar nuevas funcionalidades o discutir mejoras. Los colaboradores pueden abrir issues o participar en las discusiones de los ya existentes.

Flujo de trabajo típico en un proyecto Open Source
  1. Hacer un fork del repositorio: Desde la plataforma de Git, como GitHub, haces un fork del repositorio.

    1git clone https://github.com/usuario/repositorio-fork.git
  2. Crear una rama para tu cambio: Para trabajar en una nueva funcionalidad o corrección de error, se debe crear una rama específica.

    1git checkout -b feature/nueva-funcionalidad
  3. Realizar cambios y hacer commits: Trabaja en tu fork, realiza los cambios y comítelos.

  4. Empujar tu rama al fork:

    1git push origin feature/nueva-funcionalidad
  5. Crear un pull request (PR): Desde la plataforma web (GitHub o GitLab), abre un PR desde tu rama hacia el repositorio principal, solicitando que tus cambios sean revisados.

  6. Revisión y discusión: Los mantenedores del proyecto revisan tu PR, sugieren cambios o lo aprueban. Cuando se aprueba, los cambios se fusionan en el proyecto principal.

Buenas prácticas para contribuir a proyectos Open Source
  • Comunicarte con los mantenedores: Antes de comenzar a trabajar, revisa los issues existentes o abre uno nuevo para discutir la propuesta con los mantenedores.
  • Realizar PRs pequeños y enfocados: Un PR que abarca demasiados cambios será difícil de revisar y tendrá más probabilidades de generar conflictos.
  • Escribir mensajes de commit claros: Asegúrate de que cada commit describa claramente el cambio realizado.
  • Respetar las guías del proyecto: Muchos proyectos Open Source tienen guías de contribución específicas (como CONTRIBUTING.md) que deben ser seguidas.

Gestionar grandes repositorios con Git LFS

A medida que los proyectos crecen en tamaño, especialmente si contienen archivos grandes como imágenes, vídeos o binarios, Git puede volverse ineficiente. Git LFS (Large File Storage) es una extensión de Git diseñada para manejar grandes archivos sin afectar el rendimiento del repositorio.

¿Qué es Git LFS?

Git LFS reemplaza los archivos grandes en el repositorio con un puntero que hace referencia al archivo real almacenado en un servidor separado. Esto reduce significativamente el tamaño del repositorio y mejora el rendimiento.

Instalación de Git LFS
  1. Instalar Git LFS:

    • En sistemas Linux, macOS y Windows, puedes instalar Git LFS con:
      1git lfs install
  2. Configurar Git LFS para archivos grandes: Debes indicar qué tipo de archivos deben ser manejados por Git LFS. Esto se hace añadiendo los tipos de archivos al seguimiento de LFS.

    • Ejemplo: Si tu proyecto contiene archivos .psd grandes, puedes agregar el siguiente comando para que Git LFS gestione estos archivos:
      1git lfs track "*.psd"
  3. Agregar y confirmar archivos grandes: Una vez configurado Git LFS, añade los archivos como lo harías normalmente:

    1git add archivo-grande.psd
    2git commit -m "Agregar archivo grande con Git LFS"
  4. Empujar cambios al repositorio: Cuando empujas tus cambios al repositorio remoto, Git enviará los punteros, y Git LFS se encargará de subir los archivos grandes a su almacenamiento separado:

    1git push origin main
Beneficios de usar Git LFS
  • Mejor rendimiento: Git LFS evita que todo el archivo grande sea incluido en cada clon o pull, manteniendo el rendimiento del repositorio.
  • Almacenamiento eficiente: Solo los punteros a los archivos grandes se incluyen en el repositorio Git, mientras que los archivos en sí están almacenados de manera eficiente en un servidor separado.
  • Control de versiones: Al igual que con los archivos normales, Git LFS sigue permitiendo el control de versiones de los archivos grandes.
Buenas prácticas para usar Git LFS
  • Monitorear el uso de almacenamiento: Git LFS suele tener límites de almacenamiento en plataformas como GitHub. Asegúrate de monitorear el uso y liberar espacio cuando sea posible.
  • Incluir archivos grandes de manera proactiva: Configura Git LFS desde el principio para manejar archivos grandes y evitar problemas de rendimiento a medida que el proyecto crezca.

Auditoría y seguridad en repositorios Git

La auditoría y seguridad en repositorios Git es esencial, especialmente cuando trabajas en proyectos grandes o sensibles. Git ofrece herramientas y prácticas que ayudan a mantener la seguridad y controlar el acceso a tu código.

Auditoría del historial de commits
  1. Revisar el historial de commits: El comando git log permite rastrear los cambios realizados en el proyecto. Esto es útil para auditar el historial del repositorio y entender quién hizo qué cambios y cuándo.

    1git log --author="nombre del autor"
  2. git blame para rastrear cambios en archivos específicos: Si necesitas auditar qué cambios se hicieron en una línea específica de un archivo, git blame es una herramienta útil. Muestra qué commit modificó cada línea de un archivo y cuándo.

    1git blame archivo.txt
Seguridad en repositorios remotos
  1. Usar autenticación SSH: Siempre que sea posible, utiliza claves SSH en lugar de HTTPS para acceder a repositorios remotos. Las claves SSH ofrecen una autenticación más segura y eliminan la necesidad de compartir contraseñas.

    • Generar una clave SSH:
      1ssh-keygen -t rsa -b 4096 -C "tu_email@ejemplo.com"
  2. Usar .gitignore para evitar archivos sensibles: Asegúrate de que los archivos sensibles, como configuraciones de acceso, contraseñas o claves API, no se incluyan en el repositorio. Usa un archivo .gitignore para excluir esos archivos.

    • Ejemplo de .gitignore:
      1# Evitar archivos de configuración
      2.env
      3config/database.yml
  3. Escaneo de credenciales expuestas: Algunas plataformas como GitHub o GitLab ofrecen herramientas de escaneo automático para detectar la exposición de credenciales o claves sensibles en el código.

Firmar commits y tags

Una buena práctica de seguridad es firmar digitalmente los commits y etiquetas (tags) con GPG (GNU Privacy Guard). Esto asegura la autenticidad de los cambios y permite verificar que los commits realmente fueron realizados por el autor que dice haberlos hecho.

  1. Generar una clave GPG:

    1gpg --gen-key
  2. Configurar Git para usar tu clave GPG:

    1git config --global user.signingkey <clave-gpg>
  3. Firmar un commit: Cuando hagas un commit, añade la opción -S para firmarlo digitalmente.

    1git commit -S -m "Commit firmado digitalmente"
  4. Verificar un commit firmado: Otros desarrolladores pueden verificar la firma de un commit usando:

    1git log --show-signature
    2``

`

Auditoría de accesos en plataformas Git
  • Gestionar permisos de acceso: En plataformas como GitHub y GitLab, asegúrate de que solo las personas adecuadas tengan acceso a tu repositorio. Usa equipos y roles para limitar el acceso según sea necesario.
  • Logs de auditoría: GitHub y GitLab proporcionan herramientas de auditoría que te permiten ver quién ha accedido al repositorio, qué cambios ha realizado y cuándo.

Resumen

En el entorno profesional, Git juega un papel clave en la gestión de proyectos de código abierto, el manejo de grandes archivos y la auditoría de seguridad. Para proyectos Open Source, la colaboración mediante forks, pull requests, y issues es esencial. En proyectos que manejan grandes archivos, Git LFS ofrece una solución eficiente para evitar que los archivos grandes ralenticen el rendimiento del repositorio. Finalmente, la auditoría y seguridad son fundamentales para mantener el control y la integridad del código, y Git proporciona herramientas como reflog, blame, y GPG para asegurar los repositorios.

  • Loading...