ОМГ, какой спасительный пост! Я занимался программным обеспечением в течение 15 лет и научил многих людей передовым методам git… и я ПОЛНОСТЬЮ только что сделал именно это — новый репозиторий, случайно создал несколько тестовых входных файлов с конфиденциальными данными и рефлекторно использовал чертовски жесткий сброс.

Ваш метод полностью сработал… и только после того, как я заработал, я достаточно успокоился, чтобы понять, что у меня действительно был снимок моего рабочего дерева в месте, о котором легко забыть, и у многих из ваших читателей также может быть это: самый последний образ docker-сборки, который мы часто просто копируем в рабочий каталог. Даже если у вас не запущен контейнер, весьма вероятно, что в Docker все еще есть этот образ, и вы можете запустить специальный контейнер и `docker cp` или rsync ваши файлы из него.

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

Большое спасибо, и я надеюсь, что совет Docker поможет кому-то в будущем!