Проблема не в Git¹, а в Heroku. Его файловая система эфемерна : любые изменения, внесенные в файловую систему, теряются при каждом перезапуске dyno:
У каждого dyno есть своя эфемерная файловая система со свежей копией последнего развернутого кода. В течение срока службы динамометрического стенда его запущенные процессы могут использовать файловую систему в качестве временной блокнота, но записанные файлы не видны процессам в любом другом динамометрическом стенде, и любые записанные файлы будут отброшены в тот момент, когда динамометрический блок остановлен или перезапущен. Например, это происходит каждый раз, когда динамо заменяется из-за развертывания приложения и примерно один раз в день в рамках обычного управления динамо.
Это происходит при развертывании новой версии, а также в других ситуациях , по крайней мере, один раз в день.
Официальная рекомендация от Heroku - хранить загруженные файлы на сторонних сервисах, таких как Amazon S3.
probably Хотя, вероятно, стоит убедиться, что ваш .gitignore
настроен правильно, так как это также может быть проблемой. Попробуйте запустить git check-ignore -v public/uploads/some-file-that-exists
. Вы должны увидеть ответ, ссылающийся на правило игнорирования, которое приводит к игнорированию этого файла.