为什么' git checkout。'没有撤消rake&db; db:rollback'?所做的更改

时间:2014-06-29 17:59:28

标签: ruby-on-rails ruby database git rails-migrations

我使用scaffolding创建了一个rails应用程序并迁移了数据库。 我通过git commit -m "First commit"提交了一个本地存储库 然后我使用rake db:rollback展开数据库,应用程序停止工作。

我尝试撤消使用git checkout .,但应用程序仍未运行,直到我使用rake db:migrate再次迁移数据库。

为什么会这样?

2 个答案:

答案 0 :(得分:4)

Rails的迁移机制会检查数据库中的特定表,该表显示哪些迁移应用于您的数据库以及哪些是挂起的迁移(来自存在但没有条目的文件)。

当您执行db:migratedb:rollback时,此表也会更新。

db文件不在您的存储库中(并且不应该存在),因此您无法通过git撤消这些更改。

您需要使用rake任务提供的工具。

运行rake -T db将为您提供操作迁移和数据库状态所需工具的完整列表。

答案 1 :(得分:0)

如果要重做或更改迁移,则需要创建另一个迁移, 有关详情,请查看this