在 Git 中处理数据库的正确方法是什么?

Lee*_*ite 3 database git sqlite version-control heroku

我在 Heroku 上托管一个网站,并使用 SQLite 数据库。

问题是我希望能够从存储库中提取数据库(主要用于备份),但是每当我向存储库提交和推送更改时,数据库都不应该被更改。这是因为我本地计算机上的数据库可能包含完全不同(且不相关)的数据;这是一个测试数据库。

解决这个问题的最佳方法是什么?我尝试将数据库添加到.gitignore文件中,但这会导致数据库完全没有版本控制,从而使我无法在需要时拉取它。

mvp*_*mvp 5

虽然 git(就像大多数其他版本控制系统一样)支持跟踪数据库等二进制文件,但它只最适合文本文件。换句话说,您永远不应该使用版本控制系统来跟踪不断变化的二进制数据库文件(除非它们创建一次并且几乎从不更改)。

在 git 中仍然跟踪数据库的一种流行方法是跟踪文本数据库转储。例如,可以使用sqlite3实用程序(子命令.dump)将 SQLite 数据库转储到 *.sql 文件中。然而,即使使用转储,也只适合跟踪不经常更改的模板数据库,并使用脚本从此类转储创建二进制数据库作为标准部署的一部分。