git add .
git rebase -i HEAD^
и там склеивай.git push --all --force
git branch имя_новой_ветки # Создадим новую ветку,
# которая будет указывать на твои новые свежие правки.
# Мы просто сохранили ссылку на твою работу, не не переключаемся на новую ветку,
# чтобы следующей командой вернуть master в правильное состояние.
git reset --hard origin/master # Откатим ветку master до первоначального состояния
# на момент последнего git pull
Например пересобрать весь репозиторий через
git filter-repo
, и тогда вообще в истории не останется следов от ненужного файла. Но это получится фактически НОВЫЙ локальный репозиторий и его придётся удалить во всех внешних серверах и заливать заново.Ничего страшного не будет если файл останется в старых коммитах. Такие радикальные методы чистки используют только если файлы содержат пароли (но даже тут проще поменять пароль, чем вычищать репо), либо по ошибке закоммитили огромные двоичные файлы, которые теперь лежат мёртвым балластом. Но DS_Store обычно маленькие и не мешают.