首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何跨git分支管理对数据库的更改?

如何跨git分支管理对数据库的更改?
EN

Stack Overflow用户
提问于 2013-05-28 07:42:53
回答 2查看 1.1K关注 0票数 1

所以,我有一个应用程序,我正在试验。

在我的develop分支上,当前的状态很好。我想安装spree,但这与许多迁移和对db的更改有关。

所以我做了一个新的分支,只是为了狂欢,基于我的develop分支。

我安装了创业板,运行了迁移,还有其他的东西。

但是,我搞砸了一些东西,所以我想回到我的develop分支并删除spree分支。

我以为我的schema.rb会恢复正常,我的DB也会恢复正常。

但是,我看看我的Schema.rb,我看到了很多狂欢的桌子。

不仅如此,我还在我的Schema.rb中看到了其他表,我知道我已经为它创建了一个迁移,并在spree分支中进行了“丢弃”。

例如,我的Schema.rb中有一个Schema.rb表,我知道它应该被删除。有点困惑,我决定创建一个新的迁移,以删除orders表以及我在安装spree之前删除的其他表,并得到一个PG错误,说明该表不存在。

So....it现在看来,我的schema.rb和DB没有同步。

更糟糕的是,我的schema.rb和db/migrate文件夹没有同步。

我本来打算手动删除我的schema.rb中不应该存在的表中的schema.rb语句,但结果都是一团糟。

我怎样才能把自己从这个洞里挖出来,将来又该如何防止呢?

摘要中的

DB

狂欢前国家

  • 表A
  • 表B
  • 表C

狂欢国

  • 表A(删除)
  • 表B(删除)
  • 表C
  • Spree_Table_A
  • Spree_Table_B

狂欢后的国家

  • 表A(删除)
  • 表B(删除)
  • 表C
  • Spree_Table_A
  • Spree_Table_B

狂欢节状态基本相同

DB/迁移文件夹

狂欢前国家

  • 表A的迁移
  • 表B的迁移
  • 表C的迁移

狂欢国

  • 移除表A
  • 移除表B
  • 表C的迁移
  • Spree_Table_A的迁移
  • Spree_Table_B的迁移

狂欢后的国家

  • 表A的迁移
  • 表B的迁移
  • 表C的迁移

请注意,“后疯狂状态”的迁移不会与“后狂欢状态”的DB状态同步。

EN

回答 2

Stack Overflow用户

发布于 2013-05-28 08:30:12

将评论转换为回答,因为它变得相当冗长:

为任何新分支创建一个单独的数据库更安全,即使它只是开发数据库的快照。您将需要从您的spree分支恢复迁移(如果可能的话),并在它们上运行下载,以使您的数据库回到原来的位置。

代码语言:javascript
复制
rake db:migrate VERSION=xxx 

其中,xxx等于狂欢之前的最后一次迁移的次数。

我不是git专家,但是如果您的分支是通过git删除的,那么这个线程可能会帮助您恢复它。如果您只在本地删除它,那么您应该能够再次检查它。

Git: Recover deleted (remote) branch

票数 1
EN

Stack Overflow用户

发布于 2015-02-05 14:20:46

当您切换回您的develop分支时,git应该检查您的原始schema.rb (如果没有出现这种情况,我认为您应该重新检查正在使用的git命令)。但是,它的不会自动使您的DB与创建spree时的位置保持一致。

如果您不再有必要的迁移文件来将您的DB状态返回到与您正在签出的git中签出的提交状态对应的状态,那么您应该使用rake db:reset来匹配它们。这将转储DB的当前状态,并使用schema.rb重新构建它(然后应用适当的种子文件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16786489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档