¿Cómo manejar grandes repositorios con Git?

Git es un sistema de control de versiones distribuido gratuito y de código abierto diseñado para manejar todo, desde proyectos pequeños hasta proyectos muy grandes, con rapidez y eficiencia. Git se basa en el desarrollo distribuido de software donde más de un desarrollador puede tener acceso al código fuente de una aplicación específica y puede modificar los cambios que pueden ver otros desarrolladores. En este artículo, aprenderemos cómo manejar grandes repositorios con Git. Hay dos tipos de grandes repositorios:

  1. Uno con un gran historial de compromisos
  2. Otro con una gran cantidad de archivos binarios.

Manejo de repositorios con un gran historial de confirmaciones:

  1. Usar clon superficial
  2. Usando git-filter
  3. Clonación de una sola rama

1. Usando el clon superficial

Esta es una solución comparativamente rápida en la que extraemos solo las últimas confirmaciones del historial del repositorio. Imagine que tengo un repositorio con 1 GB de datos con más de 35000+ confirmaciones. Si elijo la clonación completa de este repositorio, en general tomará una gran cantidad de tiempo, pero si elegimos extraer solo las últimas n confirmaciones, puede reducir nuestro tiempo exponencialmente. Para realizar una clonación superficial, debemos agregar el comando de profundidad con nuestro comando de clonación

git clone --depth [n] [url]
Here n specifies number of latest n commits
url specifies the remote url of the repository

2. Usando el filtro git

Aquí podemos recorrer todo el historial del proyecto, modificar, filtrar u omitir según nuestra necesidad. Esto se usa generalmente cuando tenemos una gran cantidad de archivos binarios y solo necesitamos algunos. Para usar git-filter usamos el siguiente comando:

git filter-branch --tree-filter 'rm -rf [path-to-asset]'
path-to-asset signifies the path to binary asset in your repository

Aunque es poderoso, tiene su propio inconveniente de que cada vez que hacemos git-filter, cambia las identificaciones de la confirmación, lo que requerirá una nueva clonación. Por lo tanto, se debe tener el cuidado necesario de la reclonación al usar git-filter

3. Clonación de una sola rama

Esta técnica es útil cuando tenemos múltiples sucursales pero queremos trabajar con algunas de ellas. Para clonar una sola rama, podemos usar el siguiente comando:

git clone [url] --branch [branch_name] --single-branch
url specifies the remote url of the repository
branch_name specifies the name of the branch you want to clone

Manejo de repositorios con una gran cantidad de archivos binarios:

  1. Podemos usar submódulos, es decir, un repositorio dentro de otro repositorio. El repositorio interior contendrá todos los archivos binarios lo que nos dará modularidad ya que mantendrá el código padre por separado y si en el futuro queremos hacer cambios en este submódulo no afectará al repositorio de código padre.
  2. Podemos usar extensiones de terceros como Git LFS, una extensión de Git que se usa para administrar archivos grandes y archivos binarios en un repositorio de Git separado.
  3. Podemos usar la recolección de basura git-gc que convierte varios objetos sueltos en un solo archivo.

Conclusión

De las tres soluciones anteriores, usar extensiones de terceros como Git LFS es la más recomendada.

Publicación traducida automáticamente

Artículo escrito por unknwncdr878 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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