Parece que mi proyecto es cada vez más grande con cada git commit/push. ¿Hay alguna manera de limpiar mi carpeta git?
Parece que mi proyecto es cada vez más grande con cada git commit/push. ¿Hay alguna manera de limpiar mi carpeta git?
Respuestas:
No estoy seguro de lo que quieres. En primer lugar, por supuesto, cada vez que se compromete / empuje el directorio se hará un poco más grande, ya que tiene que almacenar cada uno de esos compromisos adicionales.
Sin embargo, probablemente desee git gclo que "limpiará los archivos innecesarios y optimizará el repositorio local" ( página del manual ).
Otro comando posiblemente relevante es el git cleanque eliminará los archivos no rastreados de su árbol ( página del manual ).
WARNINGEl comando como se escribió anteriormente por @Kalle eliminará CADA > UNTRACKED <ARCHIVO Y DIRECTORIO DENTRO DE SU RAÍZ GIT , no solo "archivos listados en .gitignore". Cualquier cosa que Git no esté rastreando, independientemente de si está o no en la lista .gitignore, se eliminará. git clean -dfX(tenga en cuenta el caso en el X) solo eliminará los elementos que tengan una regla aplicable .gitignore. Tenga en cuenta esta advertencia: nunca ejecute git cleansin ejecutarlo en modo interactivo, con en -ilugar de -f, o al menos haciendo una ejecución en seco primero, -ny luego nuevamente con -f.
Correr:
git remote prune origin
Elimina todas las ramas de seguimiento obsoletas que ya se han eliminado originpero que aún están disponibles localmente en remotes/origin.
git gc --auto
' G arbage C ollection': ejecuta tareas de limpieza (comprime revisiones, elimina objetos sueltos / inaccesibles). El --autoindicador primero determina si se requiere algún trabajo y sale sin hacer nada si no es así.
Un escenario donde su repositorio git obtendrá serio más grande con cada confirmación es una de las que está cometiendo archivos binarios que se genera con regularidad. Su almacenamiento no será tan eficiente como el archivo de texto .
Otro es uno en el que tiene una gran cantidad de archivos dentro de un repositorio (que es un límite de git ) en lugar de varios subrepos ( administrados como submódulos ).
En este artículo sobre git space , AlBlue menciona:
Tenga en cuenta que Git (y Hg, y otros DVCS) sufren un problema en el que los archivos binarios (grandes) se registran, luego se eliminan, ya que aún se mostrarán en el repositorio y ocuparán espacio, incluso si no son actuales .
Si tiene grandes binarios almacenados en su repositorio de git, puede considerar:
git filter-branch (advertencia: esto reescribirá el historial, lo cual es malo si ya ha presionado su repositorio y si otros lo han retirado)Como mencioné en " ¿Cuáles son los límites de archivos en Git (número y tamaño)? ", El más reciente (2015, 5 años después de esta respuesta) Git LFS de GitHub es una forma de administrar esos archivos grandes (almacenándolos fuera del Repositorio de Git).
si si, git gces la solución, naturalmente,
y localmente, simplemente puede eliminar el repositorio local y clonarlo nuevamente,
los segundos que esperas para que ese gran git y externos se procesen se recogen en largos minutos en los que se recogen en horas de tiempo ineficiente,
Cree un nuevo repositorio (completamente, no solo una rama) desde cero , incluida la única versión reciente de archivos, naturalmente perderá todo el historial,
pero cuando en el mundo de los códigos no es hora de ponerse sentimental, no tiene sentido arrastrar los 5 años completos de código en cada commit o diff, aún puede almacenar los viejos git y externos en algún lugar, si siente nostalgia:]
pero, en algún momento, realmente tienes que avanzar:]
¡tu equipo te lo agradecerá!
Ejecutar este comando es extremadamente peligroso, pero reducirá su repositorio al borrar todos sus archivos de recuperación / copia de seguridad de git:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
Borrará todos los archivos que git usa para recuperar su repositorio de algún comando incorrecto, por ejemplo, si lo hizo git reset --hard, generalmente puede recuperar los archivos perdidos. Pero si lo haces git reset --hardantes del git reflog expire...comando, entonces lo perdiste todo. Ahora, su única esperanza es utilizar alguna herramienta que analice su sistema de archivos e intente recuperar los archivos borrados, si no fueron anulados.
git clean -d -f -i Es la mejor manera de hacerlo.
Esto ayudará a limpiar de una manera más controlada.
-i significa interactivo.
git cleanno es tanto para limpiar el repositorio como para limpiar el directorio. Para los usuarios que copian / pegan ciegamente, tengan cuidado; Esto elimina los archivos / directorios no rastreados que realmente podría desear localmente.
No sé si lo reducirá, pero después de ejecutarlo git clean, a menudo también lo hago git repack -ad, lo que reduce la cantidad de archivos de paquete.
git gcproceso, por lo que no es necesario ejecutarlo por separado