2013-02-24 47 views
0

我在git中签出了一个分支来试验开发一个涉及进行三次迁移的功能,这是我运行的。保留数据库中非常少量的数据并不重要。将分支合并回主服务器时如何处理此问题?我应该在合并之前回滚迁移,然后在合并之后再次运行它们(这似乎是由一个SO回答建议的),或者我将它保留原样并将所有内容交给分支,然后合并它而不回滚任何东西。另一个SO回答建议从gitignore文件中删除数据库,但不清楚这是否仅在保存数据可能很重要的情况下才是必要的。git分支与迁移运行

# Ignore the default SQLite database. 
/db/*.sqlite3 

回答

3

你不应该在git中跟踪你的*.sqlite3开发文件。

你应该

  1. 合并master到您的分支
  2. 确保一切顺利
  3. 结帐master
  4. 合并分支回master
  5. 继续发展

合并将从分支中提取您的迁移。您可以在合并之前回滚,进行合并,然后进行迁移,但不需要;最后得到的模式将是相同的。


在回滚/迁移是必要的情况下,很可能你的master并彼此莫名其妙的分支之间的冲突迁移。当您“确保一切正常”时,您可以在上面的第2步中修复这个问题。

作为一般规则,您应该能够采取一个完全空白的数据库,运行rake db:migrate并最终获得最新的数据库结构,而不会出现任何故障。这就是为什么上述第2步很重要,以确保您没有合并打破/冲突的迁移回到master

至于你在开发中丢失数据的风险,这是固定装置的用途。您可以使用Rails种子功能,或者像factory_girl这样的宝石。