我在Heroku上托管一个网站,并使用SQLite数据库。
问题是我希望能够从存储库中提取数据库(主要是用于备份),但是每当我将更改提交并推送到存储库时,都不应更改数据库。这是因为本地计算机上的数据库中可能包含完全不同(和不相关)的数据。这是一个测试数据库。
最好的方法是什么?我尝试将数据库添加到.gitignore
文件中,但这导致数据库完全未版本化,从而使我无法在需要时将其拉出。
最佳答案
尽管git(就像大多数其他版本控制系统一样)支持跟踪数据库等二进制文件,但它仅对文本文件最有效。换句话说,您永远不要使用版本控制系统来跟踪不断变化的二进制数据库文件(除非它们被创建一次并且几乎永不更改)。
仍然在git中跟踪数据库的一种流行方法是跟踪文本数据库转储。例如,可以使用sqlite3
实用程序(子命令.dump
)将SQLite数据库转储到* .sql文件中。但是,即使在使用转储时,也只适合跟踪不经常更改的模板数据库,并使用脚本作为标准部署的一部分从此类转储中创建二进制数据库。