Git удаление большого файла из истории — Bitbucket

#git #repository #bitbucket

#git #репозиторий #bitbucket

Вопрос:

Я случайно отправляю большой файл на удаленный git-репозиторий в Bitbucket. Файл имеет .webm расширение. Я вставил *.webm .gitignore , а затем, чтобы удалить его, я запустил BFG:

 java -jar bfg-1.13.0.jar --delete-files *.webm
git reflog expire --expire=now --all amp;amp; git gc --prune=now --aggressive
git push origin --force
  

Проблема в том, что последняя команда продолжает выталкивать оригинал.файл webm в удаленный репозиторий, а bitbucket продолжает говорить, что в моем репозитории занято более 1 ГБ используемого пространства.

Если я запускаю вместо последней команды git push -u origin master , он говорит, что мне нужно сделать git pull , что заставляет меня снова загружать большой файл.

Что я делаю не так? Должен ли я удалить файл непосредственно из Bitbucket?

Комментарии:

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

2. @LasseV.Karlsen в предыдущей команде 2 ничего не кажется неправильным, никаких ошибок или предупреждений. Файл больше не присутствует в bitbucket, но bitbucket продолжает говорить мне, что репозиторий достигает 1 ГБ используемого пространства.

Ответ №1:

См. параграф «Ваши файлы священны» в документах BFG :

По умолчанию BFG не изменяет содержимое вашего последнего коммита в вашей главной (или «ГОЛОВНОЙ») ветке, даже если он очистит все коммиты перед этим.

Это потому, что ваш последний коммит, скорее всего, будет тем, который вы развертываете в рабочей среде

(…)

Если вы хотите отключить защиту (как правило, не рекомендуется), вы можете использовать --no-blob-protection флаг:

 $ bfg --strip-biggest-blobs 100 --no-blob-protection repo.git
  

Другой способ — вручную удалить его из головного коммита :

 git rm --cached thatfile.webm
git commit --amend