Git lfs - "это превышает ограничение размера файла GitHub в 100,00 МБ"

У меня есть некоторые CSV-файлы, размер которых превышает ограничение размера файла GitHub 100,00 МБ. Я пытался использовать расширение Git Large File Storage.

https://git-lfs.github.com/

Из LFS - "Large file versioning- Version large files—even those as large as a couple GB in size—with Git."

Я применил следующее к папкам, вызывающим озабоченность:

git lfs track "*.csv"

Однако, когда я нажимаю:

remote: error: File Time-Delay-ftn/Raw-count-data-minor-roads1.csv is 445.93 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File Time-Delay-ftn/Raw-count-data-major-roads.csv is 295.42 MB; this exceeds GitHub's file size limit of 100.00 MB

Когда я смотрю на папку, о которой идет речь:

-rw-r-----   1 user  staff    42B 23 Oct 12:34 .gitattributes
-rw-r--r--   1 user  staff   1.3K 19 Oct 14:32 DfT_raw_major_manipulation.py
-rw-r--r--   1 user  staff   1.2K 16 Oct 15:08 DfT_raw_minor_manipulation.py
drwxr-xr-x  21 user  staff   714B 22 Oct 11:35 Driving/
-rwxr-xr-x@  1 user  staff   295M 19 Oct 14:47 Raw-count-data-major-roads1.csv*
-rwxr-xr-x@  1 user  staff   446M 16 Oct 14:52 Raw-count-data-minor-roads1.csv*

когда я проверяю файл.gitattributes, вы можете увидеть настройки lfs:

*.csv filter=lfs diff=lfs merge=lfs -text

Что я делаю неправильно?

ОБНОВИТЬ

Когда я запрашиваю

git lfs ls-files

Я ничего не вернул. Это указывает на то, что, несмотря на то, что фильтр.csv успешно применяется к файлу.gitattributes, файлы csv не выбираются lfs

14 ответов

Решение

Простое добавление конфигурации git-lfs в существующий репозиторий не приведет к обратному преобразованию ваших больших файлов в поддержку LFS. Эти большие файлы останутся в вашей истории, и GitHub откажется от ваших сообщений.

Вы должны переписать свою историю, чтобы ввести git-lfs в ваши существующие коммиты. Я рекомендую инструмент для очистки репо BFG, который недавно добавил поддержку LFS.

Вы должны быть в состоянии преобразовать историческое использование ваших файлов CSV:

$ java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection

Начиная с Git LFS 2.2.0 вы можете использовать команду. В вашем случае это будет выглядеть так:

      git lfs migrate import --include="*.csv"

После этого вы сможете отправить изменения в источник.

Больше информации о git lfs migrateдоступен на сайте с примечаниями к выпуску Git LFS 2.2.0 и в документации по командам git-lfs-migrate .

У меня была такая же проблема, но она решена с помощью filter-branch

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD

это займет некоторое время, если у вас большой проект, тогда продвигайте его

git push

Я столкнулся с той же проблемой, когда некоторые из моих файлов csv были объединены в предыдущем коммите, а github отклонил мой push. Позже я нашел эту команду, которая у меня работала.

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch fixtures/11_user_answer.json'
# for my case
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch tensorflow.csv'

Ссылка на исходный пост

Попробуйте выполнить следующую команду в своем терминале. Это решит проблему lfs.

      git lfs migrate import --include="*.csv"

У меня была эта ошибка:

удаленный: ошибка: Файловый клиент / статический / статический-версия /20171221_221446.psd равен 223,61 МБ; это превышает ограничение размера файла GitHub 100,00 МБ

И так как я уже удалил этот файл из этой папки, создал файл.gitignore и попытался зафиксировать пару раз, я не знал, что он был кэширован, я не мог нажать на github. В моем случае помогло:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch client / static / static-version /20171221_221446.psd'

Где я поместил полный путь к файлу (из ошибки выше), чтобы удалить его из кэша. После этого пуш был успешно выполнен

Я вчера столкнулся с той же проблемой и взломал ее. Я не смог нажать, и оказалось, что ни один из моих больших файлов не был в lfs.

Возможно, есть лучший способ, но это сработало для меня. У меня большой репо с 2,5 гигабайтами данных.

Я устанавливаю новый репо, а затем настраиваю в нем lfs. git lfs init

Затем я настроил мои различные типы файлов git lfs track "*.pdb" git lfs track "*.dll" Затем я внес свои изменения и подтолкнул.

Затем я добавил свои большие файлы. Я использовал sourcetree, и в выходных заметках для больших файлов, совпадающих с моими подстановочными знаками, указывалось, что вместо этого он передает крошечный txt-файл. (извините, я не записывал их, но это должно быть очевидно).

Затем я нажал, и увидел "пропуск файлов", и толчок прошел быстро.

поэтому проблема, вероятно, заключается в попытке добавить в lfs файлы, которые уже есть в вашей истории. Вы можете добавлять только новые файлы. Вы можете, вероятно, очистить репо от этих файлов.

Примечание: я обнаружил, что довольно много файлов, которые соответствуют моим шаблонам, не были подобраны lfs. Подобные файлы в разных папках были подобраны, но не все. Я попытался явно добавить эти файлы, используя полный путь. git lfs track "Windows/bin/myBigFile.dll" но это тоже не помогло. В конце концов я сдался из-за нехватки времени.

Вы также должны проверить лимит хранилища с помощью gitHub. Я купил дополнительные 50 гигов, чтобы покрыть мои требования.

Клонирование репозитория теперь загружает файлы отдельно, и все, наконец, работает хорошо.

Это решение сработало для меня на Ubuntu 20.04

Установите хранилище больших файлов Git (git-lfs)

      sudo apt-get install git-lfs
git-lfs install

Чтобы преобразовать любые уже существующие файлы в Git LFS, например файлы в других ветках или в вашей предыдущей истории коммитов, используйте команду git lfs migrate.

      git lfs migrate import --include="*.ipynb" 

Выберите типы файлов для отслеживания

      git lfs track "*.ipynb"

обновить gitattributes

      git add .gitattributes

Теперь нажмите на git git commit -m "сообщение фиксации" git push

А по поводу использования хранилища и пропускной способности см.

https://docs.github.com/en/github/managing-large-files/versioning-large-files/about-storage-and-bandwidth-usage

Если вы знаете, какой коммит ввел большой коммит, вы также можете попробовать сдавить этот коммит с последующими коммитами, которые представили Git LFS.

Например, если большой коммит был три коммита назад (как показано git status), вы можете сделать следующее:

git rebase -i HEAD~3

Затем замените все "пикапы" после первого на "сквош" в интерактивном диалоге.

Затем,

git push origin --force

Если вам нужно полностью удалить файл из истории GIT, используйте эту команду:

      git filter-repo --path path-to-file-from-current-dir --invert-paths

--invert-paths- используется именно для удаления --путь, который вам нужен, иначе он удалит все, кроме этого файла

filter-repo- необходимо установить

более подробная информация здесь https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitivity-data-from-a-repository

Я тоже столкнулся с этой ошибкой. Я установил LFS и сделал следующие шаги.

И вот что я сделал:

Шаг 1. Получите идентификатор фиксации, предположим, «3540ea5c94ccd63d40» (идентификатор фиксации, содержащий большой файл)

Шаг 2: git rebase -i HEAD~1

Шаг 3: Замените все слова «выбрать» на «раздавить» в интерактивном диалоговом окне.

Шаг 4: Нажмитеescа затем сохраните файл с помощью:wq.

Шаг 5: бегgit push origin BRANCH_NAME

И это решено

Это может вам помочь

Нажмите-OriginalWebPage

Только установить lfs в существующее репо может быть недостаточно. Вы также можете изменить историю коммитов. Надеюсь, это работа для вас.

Похоже, вы не инициализировали git-lfs. Попробуй набрать

git lfs init

Источник: Установка Git LFS

Немного поздно, но вы удостоверились, что .gitignore отслеживается git lfs? Я считаю, что это команда git lfs add ".gitignore" на git bash

Другие вопросы по тегам