推送与拉取#
如果你的n8n实例连接到Git仓库,你需要保持工作与Git同步。
本文档假设您对Git概念和术语有一定了解。如需了解n8n如何与Git协同工作,请参阅Git and n8n。
建议:不要对同一个n8n实例进行推送和拉取操作
您可以将工作从一个实例推送到分支,并拉取到同一实例。n8n不建议这样做。为了减少合并冲突和覆盖工作的风险,请尝试创建一个单向的工作流程:要么推送到Git,要么从Git拉取,但不要同时进行双向操作。
获取他人的工作成果#
受限功能
并非所有用户都能从Git获取变更。您必须是n8n实例所有者或管理员才能推送或拉取变更。
要从Git拉取工作,在主菜单中选择Pull
。
n8n可能会显示关于覆盖本地更改的警告。选择拉取并覆盖以用Git中的内容覆盖您的本地工作。
当变更包含新的变量或凭证占位时,n8n会通知您需要在使用这些项目前填写其值。
如何处理已删除的资源
当工作流、凭证、变量和标签从仓库中删除时,这些资源的本地版本不会自动删除。相反,当您拉取仓库变更时,n8n会通知您有关任何过时的资源,并询问您是否要删除它们。
拉取时工作流和凭证所有者可能会变更#
当你从Git拉取到n8n实例时,n8n会尝试将工作流和凭证分配给匹配的用户或项目。
如果原始所有者是用户:
如果相同的所有者在这两个实例上都可用(匹配电子邮件),则所有者保持不变。如果原始所有者不在新实例上,n8n会将执行拉取的用户设置为工作流所有者。
如果原始所有者是一个项目:
n8n尝试将原始项目名称与新实例上的项目名称进行匹配。如果没有匹配的项目存在,n8n会创建一个具有该名称的新项目,将当前用户指定为项目所有者,并将工作流和凭据导入到该项目中。
拉取可能导致短暂服务中断#
如果您拉取活动工作流的更改,n8n会在拉取过程中将工作流设置为非活动状态,然后再重新激活它。这可能导致工作流有几秒钟的停机时间。
将您的工作发送到Git#
受限功能
普通用户无法将工作发送到Git。您必须是n8n实例所有者、管理员或项目所有者才能将工作发送到Git。
将工作推送到Git:
-
在主菜单中选择推送
。 -
在提交并推送更改模态窗口中,选择您想要推送的工作流。您可以按状态(新增、修改、删除)进行筛选,并搜索工作流。n8n会自动推送标签、变量和凭证存根。
- 输入提交信息。这应该是对你所做更改的一句话描述。
- 选择提交并推送。n8n将工作内容发送到Git,并在完成后显示成功消息。
提交的内容#
n8n 向 Git 提交以下内容:
- 工作流,包括其标签和工作流所有者的电子邮件地址。您可以选择要推送的工作流。
- 凭据存根(ID、名称、类型)
- 变量存根(ID和名称)
- 项目
- 文件夹
合并行为与冲突#
n8n的源代码控制实现具有特定设计理念。它能自动解决凭据和变量的合并冲突,但无法检测工作流中的冲突。
工作流#
在推送或拉取时,您必须明确告知n8n如何处理工作流。Git仓库将作为唯一可信源。
拉取时,您可能会收到警告,提示工作流的本地副本与Git中的版本存在差异。如果选择接受,本地副本将被覆盖。请注意在拉取时不要丢失相关更改。
当你推送时,本地工作流将覆盖Git中的内容,因此请确保你拥有最新版本,否则可能会覆盖最近的更改。
为避免上述问题,您应在完成工作流编辑后立即将更改推送至工作流。这样再进行拉取操作就是安全的。
为避免数据丢失:
- 设计您的源代码控制设置,使工作流单向流动。例如,在开发实例上进行编辑,推送到Git,然后拉取到生产环境。不要在生产实例上进行编辑并推送它们。
- 不要推送所有工作流。只选择你需要的那些。
- 谨慎手动编辑Git仓库中的文件。
凭证、变量和工作流标签#
凭证和变量不会出现合并冲突,因为n8n会自动选择保留的版本。
在拉取时:
- 如果标签、变量或凭据不存在,n8n会创建它。
- If the tag, variable or credential already exists, n8n doesn't update it, unless:
- 您可以通过API或外部方式设置变量的值。新值将覆盖任何现有值。
- 凭据名称已更改。n8n使用Git中的版本。
- 标签名称已更改。n8n会更新标签名称。重命名标签时请谨慎,因为标签名称是唯一的,在拉取过程中可能会导致数据库唯一性问题。
推送时:
- n8n会覆盖整个变量和标签文件。
- 如果凭证已存在,n8n会用更改覆盖它,但不会将这些更改应用到拉取时已存在的凭证上。
使用外部密钥保险库管理凭证
如果需要在不同的n8n环境中使用不同的凭证,请使用外部密钥。

