我的本地电脑上有一个nodejs项目。里面有一个书籍文件夹,其中书籍(在生产服务器上工作时)作为文件写入。
我通过git push heroku master将我的代码放到生产服务器上(在heroku上)。我还在books目录中添加了一个 .gitignore 文件,其中包含以下git内容,以忽略此 books 目录中的所有文件/文件夹:
!.gitignore
在我看来,这个模式应该告诉git在下一次git push时不要覆盖生产服务器上的书籍文件夹内容,但要确保文件夹本身存在(因为它存在于本地机器上并且是空的)。
使用生产服务器的人会制作一些书籍,然后将这些书籍保存为 books / 目录。
问题是,当我在本地计算机上执行 git push heroku master 时,服务器上 books 目录的内容仍然被删除。
我有两个原因发生这种情况:
任何建议在heroku制作服务器上强制书籍文件夹下载 git push heroku master 时不会丢失其内容?
答案 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
文件。