Git ошибка, необходимо удалить большой файл

Я получаю эту ошибку, когда пытаюсь нажать на git, и я не знаю, как ее исправить.

Counting objects: 1239, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1062/1062), done.
Writing objects: 100% (1239/1239), 26.49 MiB | 679.00 KiB/s, done.
Total 1239 (delta 128), reused 0 (delta 0)
remote: warning: File log/development.log is 98.59 MB; this is larger than GitHub recommended maximum file size of 50.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: efd2d13efa4a231e3216dad097ec25d6
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File log/development.log is 108.86 MB; this exceeds GitHub file size limit of 100.00 MB
remote: error: File log/development.log is 108.74 MB; this exceeds GitHub file size limit of 100.00 MB
remote: error: File log/development.log is 108.56 MB; this exceeds GitHub file size limit of 100.00 MB
remote: error: File log/development.log is 106.58 MB; this exceeds GitHub file size limit of 100.00 MB
remote: error: File log/development.log is 103.70 MB; this exceeds GitHub file size limit of 100.00 MB
To [email protected]:myUsername/myRepo.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:myUsername/myRepo.git'

Я предполагаю, что мне нужно удалить большой файл из фиксации, но как это сделать?

Ответ 1

Чтобы удалить большие файлы, GitHub предлагает:

$ git rm --cached giant_file
# Stage our giant file for removal, but leave it on disk

git commit --amend -CHEAD
# Amend the previous commit with your change
# Simply making a new commit won't work, as you need
# to remove the file from the unpushed history as well

git push
# Push our rewritten, smaller commit

Или если вам нужна более общая информация о том, как работать с большими файлами на GitHub.

И в следующий раз добавьте /log в свой .gitignore

Ответ 2

Я недавно столкнулся с той же проблемой, вы можете просто отфильтровать ветку для конкретного файла и удалить ее -

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

Ответ 3

Чтобы улучшить один из ответов выше, вам нужно

git filter-branch -f --tree-filter 'rm -f /path/to/file' HEAD --all

чтобы удалить ваш файл даже из истории. Вам нужно -f чтобы принудительно переписать любую резервную копию, и --all чтобы удалить файл из всех ветвей. Больше информации здесь: Git Docs

Ошибка большого файла не исчезнет, удалив ее из кэша git, потому что она все еще скрывается в истории коммитов.

Ответ 4

Вы можете вернуть git добавить перед фиксацией.

Проверьте этот вопрос: Как отменить 'git добавить' перед фиксацией? Он должен работать. И не отправляйте большие файлы на git, это не достойно;)

Кроме того, исключите свои журналы, добавив git ignore в свой путь к журналам.

Ответ 5

@Daniel

Вы можете игнорировать этот файл журнала из git repo с помощью файла .gitignore. для этого вам нужно добавить строку ниже в файл .gitignore

/log

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

Ответ 6

git reset --soft HEAD~1

затем исключите файл из коммита.

Примечание. Используйте HEAD ~ N, чтобы вернуться к N числу предыдущих коммитов.

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

Это должно решить проблему

Ответ 7

Добавление к предыдущим ответам:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch path_to_the_file/your_big_file

Кроме того, когда я пытался вытащить, я получил "Отказ от слияния несвязанных историй".

Решение было использовать: git pull origin branch_name --allow-unrelated-histories.

Затем решите возможные конфликты и отправьте это время без файла big_file.