Как очистить индекс?

Уже задавал вопрос, но ответы не помогли. Есть директория uploads где лежали файлы свыше 100 мб. Забыл добавить папку в гитигнор. Далее делаю:

git add ./server
git commit -m "blabla"
git push

Получаю сообщение об отмене так как файл большой. По глупости удаляю директорию вручную. Дальше:

git reset

Пытаюсь сделать еще один коммит и пуш но опять он грузить большой файл. Потом делаю:

git rm -r --cached ./server

Но и это не помогает. Он пишет что все удалил, но кроме папки из-за которой проблемы:

Картинка

После всех манипуляций все равно получаю:

Картинка

Загрузка доходит до 100% и дальше опять ошибка: "файл слишком большой"


Ответы (1 шт):

Автор решения: Fat-Zer

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

git reset --soft HEAD^

Если нужно откатить несколько коммитов, то как-то так:

git reset --soft HEAD~3

Или можно откатиться прямо к состоянию ветке в удалённом репозитории:

git reset --soft origin/master

Затем можно сделать git reset, git add и сделать уже корректные коммиты заново.


В качестве альтернативы можно также отредактировать уже сделанные коммиты с помощью git rebase -i или git commit --amend


Cм. подробности в документации git-reset

→ Ссылка