为啥 Git 在部署后会覆盖服务器上的文件?
Posted
技术标签:
【中文标题】为啥 Git 在部署后会覆盖服务器上的文件?【英文标题】:Why is Git overwriting files on server after deploying?为什么 Git 在部署后会覆盖服务器上的文件? 【发布时间】:2011-11-09 11:16:35 【问题描述】:我在 heroku 上有一个 node.js 应用程序,它将图像保存在 public/productimages 文件夹中。但是每次我推送我的新代码时,所有以前的图像都会被删除。我在 .gitignore 文件中添加了 productimages 但没有用。我本地计算机中的 public/productimages 是空的。
【问题讨论】:
你为什么要推?在这种情况下不是更好吗? 怀疑他根本不是 Git 意义上的“推动”,而是使用 Heroku 的 gem 进行部署 运行git status时,是否显示图片在排队等待删除? 评论者,这是 Heroku。这不是 Git 问题。使用git push heroku master
将应用程序简单地部署到 Heroku。
@meagar heroku
gem 未部署。使用git push
将应用程序部署到heroku。 Heroku 运行带有 post-receive 挂钩的分布式 git
服务器,以将应用程序部署到 Heroku 网格上的多个服务器。
【参考方案1】:
云计算的基本前提:存储不是持久的,除非明确规定。
未使用 Heroku,但我相信如果您的文件没有版本控制并且无法从您的存储库中获取,则不会保留它们。
【讨论】:
【参考方案2】:您不能使用文件系统在 Heroku 上进行永久存储。
原因是 Heroku 每次启动您的应用程序时,都会在一个全新的临时目录中启动它。每次 Heroku 关闭您的应用程序时,它都会删除您的应用程序之前运行的临时目录。Heroku 每晚都会这样做,每次您git push
,每次您更改配置变量时,每次您更改插件时,每次您增加或减少测功机数量等的时间。
您必须使用外部服务(例如 PostgreSQL 数据库或 S3)来存储您可能想要存储的任何内容。
【讨论】:
以上是关于为啥 Git 在部署后会覆盖服务器上的文件?的主要内容,如果未能解决你的问题,请参考以下文章