推拉
如果您的 n8n 实例连接到 Git 存储库,则需要让您的工作与 Git 保持同步。
本文档假设您熟悉 Git 概念和术语。请参阅
Git 和 n8n,了解 n8n 如何与 Git 配合使用。建议:不要推送和拉取到同一个 n8n 实例
您可以将工作从一个实例推送到分支,然后再拉取到同一个实例。n8n 不建议这样做。为了降低合并冲突和工作覆盖的风险,请尝试创建一个工作单向传输的流程:要么传输到 Git,要么从 Git 传输,但不能同时进行。
获取其他人的作品
n8n 角色控制哪些用户可以拉取(获取)更改
您必须是实例所有者或实例管理员才能从 git 中提取更改。
要从 Git 中提取工作,请在主菜单中选择
“提取” 。View screenshot
n8n 可能会显示有关覆盖本地更改的警告。选择
“拉取并覆盖”即可使用 Git 中的内容覆盖本地工作。当更改包括新的变量或凭证存根时,n8n 会通知您需要在使用这些项目之前填充它们的值。
如何处理已删除的资源
当工作流、凭证、变量和标签从存储库中删除时,这些资源的本地版本不会自动删除。相反,当您拉取存储库更改时,n8n 会通知您任何过期的资源,并询问您是否要删除它们。
工作流程和凭证所有者可能会在拉取时发生变化
当您从 Git 拉取到 n8n 实例时,n8n 会尝试将工作流和凭据分配给匹配的用户或项目。
如果原始所有者是用户:
如果两个实例上都有相同的所有者(电子邮件匹配),则所有者保持不变。如果新实例上没有原始所有者,n8n 会将执行拉取操作的用户设置为工作流所有者。
如果原所有者是一个
项目:n8n 会尝试将原始项目名称与新实例上的项目名称进行匹配。如果不存在匹配的项目,n8n 会创建一个以该名称命名的新项目,将当前用户指定为项目所有者,并将工作流和凭据导入到该项目中。
拉动可能会导致短暂的服务中断
如果您将更改拉取到活动工作流,n8n 会在拉取过程中将该工作流设置为非活动状态,然后再重新激活它。这可能会导致工作流停机几秒钟。
将您的工作发送到 Git
n8n 角色控制哪些用户可以推送更改
您必须是实例所有者、实例管理员或项目管理员才能将更改推送到 git。
要将工作推送到 Git:
查看屏幕截图
-
在
“提交并推送更改”模式中,选择要推送的工作流程。您可以按状态(新建、修改、删除)进行筛选并搜索工作流程。n8n 会自动推送标签、变量和凭证存根。 - 输入提交信息。这应该用一句话描述你所做的更改。
- 选择“提交并推送” 。n8n 将工作发送到 Git,并在完成后显示成功消息。
提交的内容
n8n 向 Git 提交以下内容:
- 工作流程,包括其标签和工作流程所有者的电子邮件地址。您可以选择要推送的工作流程。
- 凭证存根(ID、名称、类型)
- 变量存根(ID 和名称)
- 项目
- 文件夹
合并行为和冲突
n8n 的源代码控制实现方式比较固执己见。它会自动解决凭证和变量的合并冲突。n8n 无法检测工作流中的冲突。
工作流程
在推送或拉取数据时,你必须明确地告诉 n8n 如何处理工作流程。Git 存储库充当着事实来源的角色。
拉取时,您可能会收到警告,提示您本地的工作流副本与 Git 不同,如果您接受,您的本地副本将被覆盖。拉取时请务必小心,以免丢失相关更改。
当您推送时,您的本地工作流程将覆盖 Git 中的内容,因此请确保您拥有最新版本,否则您可能会覆盖最近的更改。
为了避免上述问题,您应该在完成工作流后立即将更改推送到工作流。这样就可以安全地拉取了。
为了避免丢失数据:
- 设计源代码控制设置,确保工作流程单向流动。例如,在开发实例上进行编辑,推送到 Git,然后拉取到生产环境。不要在生产实例上进行编辑并推送。
- 不要推送所有工作流程。请选择您需要的工作流程。
- 手动编辑 Git 存储库中的文件时要小心谨慎。
凭证、变量和工作流标签
凭证和变量不能有合并问题,因为 n8n 选择要保留的版本。
拉动时:
- 如果标签、变量或凭证不存在,n8n 会创建它。
- 如果标签、变量或凭证已存在,n8n 不会更新它,除非:
- 您使用 API 或外部设置变量的值。新值将覆盖任何现有值。
- 凭证名称已更改。n8n 使用 Git 中的版本。
- 标签名称已更改。n8n 更新标签名称。重命名标签时请小心,因为标签名称是唯一的,这可能会导致在拉取过程中出现数据库问题。
按下时:
- n8n 覆盖整个变量和标签文件。
- 如果凭证已经存在,n8n 会用更改覆盖它,但不会将这些更改应用于拉取的现有凭证。