Mover los files de seguimiento GIT LFS bajo Git regular

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 usando git lfs uninit , git lfs untrack , git rm … después de mover esos files, sigue list como rastreada por Git LFS con git lfs ls-files , ¿cómo puedo excluir todo el material de GIT LFS de mi repository?

La respuesta fue:

  1. Elimine todas las inputs de configuration de filter.lfs. * Git con git lfs uninit .
  2. Borre cualquier atributo que use el filter lfs en .gitattributes ejecutando git 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 con git-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.