推送和拉取#
如果您的 n8n 实例连接到 Git 仓库,您需要保持您的工作与 Git 同步。
本文档假设您对 Git 概念和术语有一定的了解。有关 n8n 与 Git 工作方式的介绍,请参阅 Git 与 n8n。
建议:不要在同一个 n8n 实例上推送和拉取
您可以从实例向分支推送工作,并拉取到同一实例。n8n 不建议这样做。为了降低合并冲突和覆盖工作的风险,请尝试创建一个工作只朝一个方向流动的流程:要么到 Git,要么从 Git,但不要双向。
获取其他人的工作#
n8n 角色控制哪些用户可以拉取(获取)更改
您必须是实例所有者或实例管理员才能从 Git 拉取更改。
要从 Git 拉取工作,请在主菜单中选择拉取 。
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 会用更改覆盖它,但在拉取时不会将这些更改应用于现有凭证。
使用外部机密库管理凭证
如果您需要在不同的 n8n 环境中使用不同的凭证,请使用外部机密。
🚀 与作者交流

📚 教程 💡 案例 🔧 技巧

⚡ 快答 🎯 定制 🚀 支持