Если вы можете вернуться в прошлое, чтобы «удалить удаление» файла из истории (как если бы оно никогда не было удалено), то это то, что вы делаете.Давайте предположим, что файл был удален на главном сервере ~ 3.
git checkout master~3
git checkout HEAD~1 -- Podfile.lock # get the file back from previous revision
git commit --amend --no-edit # commit (file should not be deleted on this revision)
git cherry-pick master~3..master # replay history of master after the revision we modified
# at this point you should verify that everything is ok
# if everything is ok, then we need to move master pointer
git branch -f master
git checkout master # checkout new "fixed" master
Этого должно быть достаточно.Это переписывает историю ветки .... с ней связаны издержки (другие разработчики уже работают над старой веткой? Им придется, например, перебазировать / выбрать свою работу поверх новой ветки).