簡體   English   中英

提交時忽略公共上傳

[英]Ignore public uploads on commit

我遇到的問題是,每次對代碼進行任何更改時,都會刪除所有用戶上傳的圖像。 我認為這是因為它使服務器上的公共上載與我本地上的內容相匹配。

所以我在/public/uploads/* .gitignore添加了/public/uploads/*

git rm -r --cached.
git add .
git commit
git push

沒有解決。 還嘗試添加到.gitignore */uploads/***/uploads/*/uploads/*

部署到Heroku時如何防止提交抹掉用戶上傳的內容?

問題不在於Git¹,而在於Heroku。 它的文件系統是短暫的 :只要重新啟動測功機,對文件系統所做的任何更改都會丟失:

每個dyno都有自己的臨時文件系統,其中包含最新部署的代碼的新副本。 在dyno的生命周期中,其正在運行的進程可以將文件系統用作臨時暫存器,但是任何其他dyno中的進程都看不到已寫入的文件,並且在dyno停止或重新啟動時,所有寫入的文件都將被丟棄。 例如,在由於應用程序部署而更換測功機的任何時候都會發生這種情況,並且在正常測功機管理的一部分中大約每天一次。

在部署新版本時以及在其他情況下 (每天至少一次),會發生這種情況。

Heroku官方建議是將上傳的文件存儲在第三方服務(如Amazon S3)上。


¹盡管可能值得驗證.gitignore的配置正確,因為這也可能是一個問題。 嘗試運行git check-ignore -v public/uploads/some-file-that-exists 您應該看到引用忽略規則的響應,導致該文件被忽略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM