团队开发
要合并来自合作者的更改
-
拉取已更改的 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
字段,而不是模型和字段。