我在Heroku上有一个php应用程序,其中用户数据存储在sqlite中。每次我更新我的php文件并将其推送到Heroku时,本地sqlite文件也会更新...这意味着我丢失了工作数据并获取了启动数据。
包含.gitignore中的文件可确保Heroku应用程序无法使用此文件。它只是从远程git存储库中删除该文件。
git update-index --assume-unchanged无法标记sqlite文件。它给我一个错误,说“无法标记文件”。
需要帮助才能创建一次sqlite文件,然后根本不更新/删除。 Thanx的建议。
答案 0 :(得分:1)
将文件掩码添加到.gitignore
本身并没有做任何事情,当然也不会从远程存储库中删除文件(阅读更多here)。
通常,将SQLite数据库存储在源代码控制(包括git)下是非常糟糕的。对此的最佳解决方案是创建在必要时创建模板数据库的脚本。这个脚本可能如下所示:
database.sql:
BEGIN TRANSACTION; -- wrap everything into one transaction
-- create tables, always use NOT EXISTS:
CREATE TABLE IF NOT EXISTS items (
item_id INTEGER AUTOINCREMENT PRIMARY KEY,
item_name VARCHAR(32)
);
-- create indexes, always use NOT EXISTS:
CREATE INDEX IF NOT EXISTS items_item_name ON items (item_name);
-- add more CREATE TABLE and/or CREATE INDEX statements...
COMMIT;
然后您可以使用以下命令执行此脚本:
sqlite3 -init database.sql database.db ""
如果您第一次执行它,如果它不存在,将创建database.db
。如果你第二次执行它,什么都不会发生。但是,您可以稍后决定将更多索引或表添加到database.sql
(将受源代码管理)中,稍后执行它会将缺少的对象添加到数据库中。
答案 1 :(得分:0)
Edit .gitignore to match the file you want to ignore
git rm --cached /path/to/file
答案 2 :(得分:0)
好吧....好像我已经结束了。我应该有.gitignore条目或--assume-unchanged。两者在一起有些搞砸了所有设置。 目前已删除.gitignore条目,并已将sqlite文件设置为未更改,直至另行通知,使用 git update-index --assume-unchanged myDB.sqlite 这对我有用。 @rkp& @mvp ...感谢您的帮助......如果我过于热心,没有多少帮助是好的! :)