lsf for files descargar git git-lfs

for - git lfs version



Mover archivos rastreados Git LFS bajo Git regular (4)

Hace poco me encontré con este problema donde los activos se agregaron accidentalmente a git-lfs en una rama 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 "restore ''<file-type>'' to git from lfs"

El resultado es una reescritura de los punteros sha256 de git-lfs oid con el contenido del archivo estándar.

Tengo un proyecto donde almacené archivos de video con Git LFS. Ahora me encontré con algunas complicaciones con mi servidor de compilación que aún no es compatible con Git LFS. Como es un servicio externo, realmente no puedo afectar el proceso de compilación, por lo que me gustaría mover los archivos de debajo de Git LFS a Git "normal". Logré deshacer el seguimiento de los tipos de archivos con git lfs untrack ''<file-type>'' pero git lfs ls-files aún ofrece una lista de los archivos agregados anteriormente.

Me imagino que podría eliminar los archivos, empujar los cambios y luego volver a agregarlos manualmente, pero ¿es esta realmente la forma recomendada de hacer las cosas?


Realmente no puede eliminar nada de GIT LFS, y aunque las soluciones presentadas aquí pueden funcionar (con modificaciones), requieren mucho esfuerzo y pueden tener efectos secundarios en su repositorio.

Si llegó aquí, es hora de preguntarse si desea administrar sus archivos grandes con GIF LFS y si el propio GIT (que es inherentemente malo en la administración de archivos grandes, porque es un sistema de control de versiones distribuido) fue una buena opción.

Si tiene muchos archivos grandes y es una sola organización que trabaja en su proyecto, algo como Subversion puede funcionar mejor para usted.


Tuve problemas haciendo pasos en Windows. Para eliminar todos los archivos seguidos de git lfs y restaurar el archivo original, hice lo siguiente en git bash:

  1. Eliminado .gitattributes

  2. git lfs ls-files | cut -d '' '' -f 3 > lfs-files.txt

3. mientras se lee el archivo; do git lfs untrack "$ file"; git rm --cached "$ file"; git add --force "$ file"; hecho


El número 641 menciona el mismo problema.

Intenté dejar de usar Git LFS, pero no encontré ninguna manera de revertir mis archivos de punteros rastreados anteriores usando git lfs uninit , git lfs untrack , git rm ... después de mover esos archivos nuevamente, sigue apareciendo como Git LFS con git lfs ls-files , ¿cómo puedo excluir todo el contenido de Git LFS de mi repositorio?

La respuesta fue:

  1. Elimine todas las entradas de configuración de filter.lfs. * Git con git lfs uninit .
  2. Borre cualquier atributo que use el filtro lfs en .gitattributes ejecutando git lfs untrack para cada tipo de archivo, o eliminando .gitattributes si LFS es todo para lo que lo usó.

Después de esto, cualquier archivo agregado irá directamente a git.

Pero esto no era tan simple:

Más tarde termino con los archivos de puntero LFS en mi directorio de trabajo y tengo que recuperar todas mis imágenes de .git/lfs usando el hash sha1 almacenado en esos punteros manualmente.

Actualización de marzo de 2016, el problema 957 ilustra una posible solución de tstephens619 :

Cometí el mismo error de incluir varios formatos de gráficos pequeños en mi lista de seguimiento de git lfs .
Pude mover estos archivos de nuevo a git haciendo lo siguiente:

  • Cree una lista de todos los archivos que están siendo rastreados actualmente por git-lfs , filtre *.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 rastrear los pequeños archivos gráficos

    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 uninit git-lfs

    git lfs uninit # Git LFS 2.x+ git lfs uninstall

  • Usa la lista de archivos para tocar cada archivo:

    cat ~/temp/lfs-files.txt | xargs touch

git status ahora mostrará cada archivo como modificado.

  • Agregar los cambios al índice de git (lo hice a través de git gui )

  • cometer los cambios y luego reiniciar git-lfs

    git commit git lfs init

El mantenedor ttaylorr agrega:

Una forma de hacer esto sería:

for file in $FILES_TO_REVERT; do git lfs untrack "$file"; git rm --cached "$file"; git add --force "$file"; done git commit -m "..."

Mi preferencia sería no agregar un comando a Git LFS al efecto anterior, ya que es posible de varias maneras diferentes con los comandos de porcelana proporcionados por Git y Git LFS