在GIT中处理Rails db / schema.rb文件的正确方法是什么?

我们是否应该在包含schema.rb同时向GIT提交? 或者我们应该忽略它? 什么是正确的方法?

那么Rails 2的标准schema.rb文件就在这个文件顶部的注释块的末尾:

 # It's strongly recommended to check this file into your version control system. 

Rails 3 schema.rb ,我踢着说同样的事情。 我觉得这个评论是这么说的。


更新回应评论:是的,可以犯的错误,你可以得到冲突的变化和错误mango你的schema.rb但这就是为什么你想要在版本控制,版本控制允许你跟踪一切,并在需要时进行备份。 整个源代码树中只有一个用于指定数据库架构的东西,即schema.rb 。 您的数据库模式绝对是一个重要的工件,任何重要的东西都需要在版本控制中进行跟踪。

任何有关schema.rb更新/合并问题都应该通过整理出冲突的迁移来解决,所以schema.rb将会被固定为解决实际问题的副作用。

是的, schema.rb是一个生成的文件,但它只是在您的文本编辑器生成您的pancakes.rb模型文件或未编辑的scaffold文件生成的意义上生成的。

是的,你可以通过构build一个新的数据库然后运行所有的迁移来重buildschema.rb文件。 但是,您应该立即清理旧的迁移,以避免每次rake db:migrate时检查数以百计的迁移文件rake db:migrate所以“重build并运行所有迁移”通常不是高活跃项目中的一个选项。

是。 在使用rake db:reset和其他命令时,模式文件用于configuration数据库。 迁移只能在更改数据库模式时使用,并且总是会生成新的模式文件。

那么,默认情况下它不包含在.gitignore中。 所以,我认为你不会有问题,包括它(我在我的项目中,没有任何问题)。

我不把这个文件提交给Git,因为当我启动rake db:migrate时候创build这个文件。

如果我将这个文件提交给Git,那么在每个db:migrate之后,我都无法从服务器获取新的更改。