Tengo un proyecto donde almacené files de video con Git LFS. Ahora me encontré con algunas complicaciones con mi server de compilation que aún no es compatible con Git LFS. Como es un service externo, realmente no puedo afectar el process de compilation, y por lo tanto querría mover los files desde Git LFS a Git "regular". Me las arreglé para destrabar los types de files con git lfs untrack '<file-type>'
pero git lfs ls-files
aún da una list de los files agregados previamente.
Me imagino que podría eliminar los files, presionar los cambios y luego volver a agregarlos manualmente, pero ¿esta es realmente la forma recomendada de hacer las cosas?
El número 641 menciona el mismo problema.
Traté de dejar de usar Git LFS, pero no encontré la manera de revertir mis files de pointers
git lfs uninit
anteriores usandogit lfs uninit
,git lfs untrack
,git rm
… después de mover esos files, sigue list como rastreada por Git LFS congit lfs ls-files
, ¿cómo puedo excluir todo el material de GIT LFS de mi repository?
La respuesta fue:
- Elimine todas las inputs de configuration de filter.lfs. * Git con
git lfs uninit
.- Borre cualquier atributo que use el filter lfs en
.gitattributes
ejecutandogit lfs untrack
para cada tipo de file, o eliminando.gitattributes
si LFS es todo lo que alguna vez lo usó.
Después de esto, cualquier file agregado irá directamente a git.
Pero esto no fue tan simple:
Luego termino con los files del puntero LFS en mi directory de trabajo y tengo que recuperar todas mis imágenes de
.git/lfs
usando el hash sha1 almacenado en esos pointers manualmente.
Actualización de marzo de 2016, el número 957 ilustra una posible solución por tstephens619
:
Cometí el mismo error de include varios pequeños formattings de charts en mi list de seguimiento de
git lfs
.
Pude mover estos files de vuelta a Git haciendo lo siguiente:
Cree una list de todos los files que
git-lfs
rastrea actualmente, filtra*.gz
y*.rpm
(quiero seguir rastreando esas extensiones congit-lfs
)git lfs ls-files | grep -vE "\.gz|\.rpm$" | cut -d ' ' -f 3 > ~/temp/lfs-files.txt
Deja de seguir los pequeños files charts
git lfs untrack "*.tts" git lfs untrack "*.bfx" git lfs untrack "*.ttf" git lfs untrack "*.xcf" git lfs untrack "*.pkm" git lfs untrack "*.png"
Temporalmente sin iniciar
git-lfs
git lfs uninit # Git LFS 2.x+ git lfs uninstall
Use la list de files para tocar cada file:
cat ~/temp/lfs-files.txt | xargs touch
git status
ahora mostrará cada file como modificado
Agregue los cambios al índice git (esto lo hice a través de
git gui
)cometer los cambios y luego volver a iniciar git-lfs
git commit git lfs init
Recientemente me encontré con este problema donde se agregaron accidentalmente activos a git-lfs en una twig que no debería haber sido. Mi solución fue:
git lfs untrack '<file-type>' git rm --cached '<file-type>' git add '<file-type>' git commit -m "restre '<file-type>' to git from lfs"
El resultado es una reescritura de los pointers git-lfs oid sha256 con los contenidos de file estándar.
Realmente no se puede eliminar nada de GIT LFS, y aunque las soluciones presentadas aquí pueden funcionar (con modificaciones), requieren un gran esfuerzo y pueden tener efectos secundarios en su repository.
Si llegó aquí, es hora de preguntarse si desea gestionar sus files de gran tamaño con GIF LFS y si GIT (que es intrínsecamente malo en la gestión de files de gran tamaño, ya que es un sistema de control de versiones distribuidas) fue una buena opción.
Si tiene muchos files grandes y es una sola organización que trabaja en su proyecto, algo como Subversion puede funcionar mejor para usted.