Git lfs - "это превышает ограничение размера файла GitHub в 100,00 МБ"
У меня есть некоторые CSV-файлы, размер которых превышает ограничение размера файла GitHub 100,00 МБ. Я пытался использовать расширение Git Large File Storage.
Из 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
А по поводу использования хранилища и пропускной способности см.
Если вы знаете, какой коммит ввел большой коммит, вы также можете попробовать сдавить этот коммит с последующими коммитами, которые представили 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
И это решено
Только установить lfs в существующее репо может быть недостаточно. Вы также можете изменить историю коммитов. Надеюсь, это работа для вас.
Немного поздно, но вы удостоверились, что .gitignore отслеживается git lfs? Я считаю, что это команда git lfs add ".gitignore" на git bash