Как удалить файл из репозитория локального и удаленного, но сохранив локально?
Можно попробовать сделать коммит в удалённый репозиторий, в котором данный файл будет удалён. А потом в ручном режиме просто добавить его на локальной машине и внести в игнор.
Вопрос неточный. Если в удаленный репозиторий попал файл с паролями, и к этому репозиторию есть доступ у других людей, то первое, что нужно сделать - поменять все пароли, которые оказались опубликованы. Потом файл копируете в надежное место, удаляете в рабочей копии, комитите, добавляете в gitignore, снова коммитите. Делаете git push. Файл можно вернуть обратно.
Если доступ есть только у вас, или принципиально хотите удалить информацию из хранилища, воспользуйтесь командами изменения существующих коммитов `git rebase --interactive` (подробнее в Изменение коммитов в Git, раздел "Изменение НЕ последнего коммита") и принудительной перезаписи истории `git push origin +master` (git push -f).
По второму вопросу. Есть следующая техника: в репозиторий добавляется файл config.ini.example с полным набором настроек, только ненастоящими паролями. В gitignore добавляется config.ini. После этого можно смело копировать config.ini.example в config.ini, вносить нужные изменения, работать.