团队开发
合并来自协作者的更改
-
拉取已更改的 Prisma 模式和
./prisma/migrations
文件夹 -
运行
migrate dev
命令以应用新的迁移npx prisma migrate dev
迁移将**按照创建顺序应用**。创建日期是迁移子文件夹名称的一部分,例如,20210316081837-updated-fields
是在 2021-03-16-08:18:37
创建的。
示例:合并团队的更改
以下示例场景演示了三个开发人员团队如何共享和合并对 Prisma 模式和迁移历史的更改。
以下选项卡显示了团队在进行一轮更改之前和之后,Prisma 模式的状态。
- 之前
- 之后
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
favoriteColor String? // Added by Ania
bestPacmanScore Int? // Added by you
posts Post[]
}
// Added by Javier
model Tag {
tagName String @id
tagCategory Category
}
团队的更改
您的团队成员 Ania 和 Javier 在其本地环境中对模式进行增量更改并生成迁移。
**Ania** 进行了以下更改
-
添加模型字段
model User {
/* ... */
favoriteColor String?
} -
生成迁移
npx prisma migrate dev --name new-field
-
提交已更改的模式和新迁移
./prisma/schema.prisma
./prisma/migrations/20210316081837-new-field/migration.sql
**Javier** 进行了以下更改
-
向模式添加新模型
model Tag {
tagName String @id
tagCategory Category
} -
生成迁移
npx prisma migrate dev --name new-model
-
提交已更改的模式和新迁移
./prisma/schema.prisma
./prisma/migrations/20210316091837-new-model/migration.sql
迁移历史现在有两个新的迁移
集成更改
**您**希望合并团队的更改。为此,您需要
-
拉取团队的最新更改,包括
-
两个新的迁移
./prisma/migrations/20210316081837-new-field/migration.sql
./prisma/migrations/20210316091837-new-model/migration.sql
-
更新的模式文件。Git 会自动将更新的模式与*您*的本地模式更改(新的
bestPacmanScore
字段)合并。model User {
/* ... */
favoriteColor String?
bestPacmanScore Int?
}
model Tag {
tagName String @id
tagCategory Category
posts Post[]
}
-
-
运行
migrate dev
命令npx prisma migrate dev
-
将 Ania 和 Javier 的迁移应用于您的本地数据库。
./prisma/migrations/20210316081837-new-field/migration.sql
./prisma/migrations/20210316091837-new-model/migration.sql
-
使用您的更改创建一个新的迁移,提示您为其命名(
pacman-field
),并将新的迁移应用于您的本地数据库。./prisma/migrations/20210322081837-pacman-field/migration.sql
-
-
提交合并的
schema.prisma
和您的新迁移:./prisma/migrations/20210322081837-pacman-field/migration.sql
您的 schema.prisma
和本地数据库现在包含了团队的更改,迁移历史也包含了您的迁移。
源代码管理
您应该将以下文件提交到源代码管理
.prisma/migrations
文件夹的内容,包括migration_lock.toml
文件- Prisma 模式 (
schema.prisma
)
仅对 schema.prisma
文件进行源代码控制是不够的,您必须包含迁移历史。这是因为
- 当您开始自定义迁移时,迁移历史包含**无法在 Prisma 模式中表示的信息**。例如,您可以自定义迁移以减轻破坏性更改可能导致的数据丢失。
prisma migrate deploy
命令用于将更改部署到暂存、测试和生产环境,它*仅*运行迁移文件。Prisma Migrate 仅使用模式读取url
和provider
字段,而不是模型和字段。