¿La mejor acción / movimiento / sugerencia para gestionar el tamaño del file repo en Git, especialmente en proyectos de juegos más grandes?

Actualmente estaba usando Bitbucket ya que tiene un tamaño de repo de 2GB y te permite tener un repository privado gratis. Dado que el límite alcanza los 2 GB e intentó networkingucir el tamaño del file con BFG , junto con su tutorial , para networkingucir el tamaño del repository y eliminar el historial anterior. Tristemente, estoy a la mitad y nunca sucede después de que lo empujé al repository. Mi tamaño se networkingujo de 2 GB a alnetworkingedor de 500 a 600 MB de tamaño de repository de la carpeta "nombre.git", mientras que la carpeta de mi proyecto de Unity tiene alnetworkingedor de 1 GB.

Traté de crear un nuevo repository en lugar de mi frustración, copyr y pegar el proyecto y utilizar el LFS instalado para poner directamente todos los files grandes conocidos para algún tipo de file específico. Una vez que lo empujé, tardó más de lo normal. Me está dando vueltas si realmente me toma mucho time o probablemente se mantenga congelado, suponiendo que faltan algunos requisitos. Ese LFS proporcionó almacenamiento adicional de 10GB (no estoy seguro de si es por repository o no) y dado que se suponía que allí almacenaría grandes files, creo.

¿Qué debo hacer para tener la tranquilidad de tener una copy de security en línea exitosa mientras mantengo el control de la versión como tal? Creé temporalmente una unidad de Google Drive (no es la mejor forma de hacer copys de security de files grandes de proyectos) para almacenar en línea una copy de security de mis files grandes mientras resolvía los problemas de GIT. Bitbucket podría ser mejor para proyectos de juegos pequeños (2D o 3D) y otras cosas, pero ¿qué otras alternativas aparte de GitHub , Bitbucket y SVN? El website de git repo gratuito contiene un gran tamaño de almacenamiento repo?

Además, sobre LFS, ¿debería usar BFG primero antes de seguir el seguimiento de types de files conocidos por tener grandes tamaños de files en grupos (por ejemplo, .psd, .mp3, .dae …)?

Puede cambiar el tamaño de su repository por la línea de command de git, pasos como a continuación:

  1. Clona el repository a git clone <URL> local git clone <URL>
  2. Enumere el tamaño de los files y luego puede decidir qué necesidad eliminar, use find . -type f -printf "%s\t%p\n" | sort -nr | head -n 100 find . -type f -printf "%s\t%p\n" | sort -nr | head -n 100
  3. Limpia para los historiales y ahorra espacio no válido, puedes usar los commands a continuación:

git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch filename' --prune-empty -f -- --all

rm -rf .git/refs/original/

git reflog expire --expire=now –all

git gc --prune=now

git gc --aggressive --prune=now

  1. Empuje el repository local networkingimensionado a remoto, use el git push origin --force –all git push origin --force –tags y git push origin --force –tags

Nota: si trabajas en OSX OS, también puedes consultar el blog de Steve Lorek

Debido a que GitHub y Bitbucket es el control remoto diferente para git, entonces la diferencia entre GitHub, Bitbucket y SVN es principalmente la diferencia del sistema de control de versiones (VCS) entre GIT y SVN, puede consultar aquí .

Para GitHub y Bitbucket, como saben, Bitbucket puede crear repository privado de forma gratuita (si su repository se utiliza con less de 5 usuarios), pero GitHub necesita pagar repositorys privados. Así que siempre creo repositorys públicos en GitHub y repositorys privados en Bitbucket.

Parte II

La otra situación, en el \ .git\objects\ , ambos tienen objects sueltos y packages de files, por lo que podemos convertir todos los objects sueltos en files de package y luego tratar con el file de package.

  1. Oculta todos los objects sueltos en los files de packages git gc y comtesting el tamaño del package git count-objects -v
  2. Muestre que .idx packfiles find .git/objects/pack , asum que el nombre es pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx
  3. Enumere los 3 objects más grandes git verify-pack -v .git/objects/pack/ pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx |sort –k 3 –n | tail -3 git verify-pack -v .git/objects/pack/ pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx |sort –k 3 –n | tail -3 y luego copie el valor de SHA-1 para los objects más grandes, suponga que SHA-1 es ac78de3
  4. Encuentra el file más grande git rev-list --objects --all | grep ac78de3 git rev-list --objects --all | grep ac78de3 , suponga que el file más grande es src.zip
  5. Encuentra los historiales de confirmación que cambiaron el git log --oneline --branches – src.zip más grande del file git log --oneline --branches – src.zip , copy el ID de confirmación más antiguo, asume que es a50197e
  6. Elimine el file de las historias de confirmación de cambios más antiguas git filter-branch --index-filter 'git rm --ignore-unmatch --cached git.tgz' -- a50197e ^..
  7. Eliminar la reference inútil rm -Rf .git/refs/original , rm -Rf .git/logs git gc y git prune --expire now
  8. Revise el tamaño del package git count-objects -v