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:
- Uno con un gran historial de compromisos
- Otro con una gran cantidad de archivos binarios.
Manejo de repositorios con un gran historial de confirmaciones:
- Usar clon superficial
- Usando git-filter
- 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:
- 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.
- 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.
- 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