推送和拉取
将 n8n 实例连接到 Git 仓库后,需要保持工作与 Git 同步。
本文假定你熟悉一些 Git 概念和术语。关于 n8n 如何使用 Git,请参阅 Git 与 n8n。
建议:不要对同一个 n8n 实例既推送又拉取
可以从实例向分支推送工作,再拉取到同一实例,但 n8n 不推荐这样做。为降低合并冲突和覆盖工作的风险,请尽量建立单向流程:要么将工作推送到 Git,要么从 Git 拉取,避 免在同一实例中双向操作。
获取他人的工作
n8n 角色控制哪些用户可以拉取(获取)更改
必须是实例所有者或实例管理员,才能从 Git 拉取更改。
要从 Git 拉取工作,请在主菜单中选择 Pull(拉取)
。
查看截图
n8n 可能会警告该操作将覆盖本地更改。选择 Pull and override(拉取并覆盖),即可使用 Git 中的内容覆盖本地工作。
如果更改中包含新的变量或凭据存根,n8n 会提示你在使用这些项目之前补填相应的值。
如何处理已删除的资源
当工作流、凭据、变量、标签和数据表从仓库中删除时,这些资源的本地版本不会自动删除。拉取仓库更改时,n8n 会提示哪些资源已过时,并询问是否删除。
译注:本段关于不自动删除资源的概述,与下文数据表的说明存在差异:下文指出,本地存在但 Git 中不存在的数据表会在拉取时删除,使用 force 的 API 或自动化拉取会跳过确认,并删除表中全部行数据。此处保留原文;不要将本段概述作为自动化拉取不会删除数据表的保证。
拉取可能更改工作流与凭据的所有者
从 Git 拉取到 n8n 实例时,n8n 会尝试将工作流和凭据分配给匹配的用户或项目。
如果原所有者是 用户:
如果两个实例中都有同一所有者(邮箱匹配),所有者保持不变。如果新实例中没有原所有者,n8n 会将执行拉取的用户设为工作流所有者。
如果原所有者是项目:
n8n 会尝试按项目名称在新实例中匹配原项目。如果没有匹配项目,n8n 会创建同名项目,将当前用户分配为项目所有者,再将工作流和凭据导入该项目。
拉取时自动发布工作流
拉取时,可通过拉取弹窗的 Auto publish(自动发布)下拉菜单,选择是否自动发布工作流。共有三种模式:
- Off(关闭,默认):不尝试发布任何工作流。工作流保留当前在本地的发布状态。
- If workflow already published(工作流已发布时):仅尝试发布本实例中已发布的工作流,新工作流不会发布。
- On(开启):尝试发布所有拉取的工作流,包括新工作流。
无论自动发布设置如何,n8n 都不会自动发布已归档的工作流。
启用自动发布并完成拉取后,n8n 会显示结果弹窗,列出成功发布和发布失败的工作流。如果工作流存在验证错误或缺失凭据,发布可能失败。
也可通过 API,使用拉取端点的 autoPublish 参数自动发布,可选值为 none