在通过git push部署到heroku时,文件夹被清空

时间:2014-07-08 12:33:03

标签: git heroku

我的本​​地电脑上有一个nodejs项目。里面有一个书籍文件夹,其中书籍(在生产服务器上工作时)作为文件写入。

我通过git push heroku master将我的代码放到生产服务器上(在heroku上)。我还在books目录中添加了一个 .gitignore 文件,其中包含以下git内容,以忽略此 books 目录中的所有文件/文件夹:

!.gitignore

在我看来,这个模式应该告诉git在下一次git push时不要覆盖生产服务器上的书籍文件夹内容,但要确保文件夹本身存在(因为它存在于本地机器上并且是空的)。

使用生产服务器的人会制作一些书籍,然后将这些书籍保存为 books / 目录。

问题是,当我在本地计算机上执行 git push heroku master 时,服务器上 books 目录的内容仍然被删除。

我有两个原因发生这种情况:

  1. heroku会在推送
  2. 之前自动清除所有文件
  3. 如果不是(1),那么我仍然无法正确写出.gitignore。
  4. 任何建议在heroku制作服务器上强制书籍文件夹下载 git push heroku master 时不会丢失其内容?

1 个答案:

答案 0 :(得分:2)

缺少书籍

这与你的Git无关(尽管它们似乎是错误的,见下文)。

与大多数PaaS提供商一样,Heroku做not provide a persistent filesystem。每次部署时,您写入磁盘的任何内容都将丢失。

Heroku推荐的一个热门选项是store uploaded files on Amazon S3

.gitignore个模式

要让Git忽略books/目录中的文件,根.gitignore中的这类内容应该可以解决问题:

/books/*

除非你有其他的忽略你没有与我们分享,否则你当前的规则只是说不要忽略books/.gitignore,但是没有说它忽略该目录中的其他文件。

我在Git中保留“空”目录的最常见方法是向它们添加一个空的.gitkeep文件。