跳到主要内容

推送与拉取#

若您的 n8n 实例已连接至 Git 代码库,需保持工作内容与 Git 的同步。

本文档默认您已熟悉 Git 基础概念与术语。若需了解 n8n 与 Git 的协作机制,请参阅 Git 与 n8n 介绍文档。

重要建议:避免在同一 n8n 实例中同时执行推送与拉取操作

虽然支持从实例推送工作内容至分支,并从同一实例拉取更新,但 n8n 官方不推荐此操作模式。为降低合并冲突与工作内容覆盖风险,建议建立单向流转流程:仅向 Git 推送内容,或仅从 Git 拉取内容,避免双向同步。

获取他人工作内容#

n8n 角色权限控制拉取权限

需具备实例所有者或实例管理员权限方可从 Git 拉取变更。

操作路径:在主菜单中点击 拉取 拉取图标

视图参考 菜单收起时的拉取与推送按钮

菜单收起时的拉取与推送按钮

菜单展开时的拉取与推送按钮

菜单展开时的拉取与推送按钮

若存在本地变更冲突,n8n 将显示覆盖警告。选择 拉取并覆盖 即可使用 Git 内容替换本地工作。

当变更包含新变量或凭证存根时,n8n 会提示在使用前需完善这些项目的具体数值。

已删除资源的处理机制

当工作流、凭证、变量和标签从代码库中删除时,其本地版本不会自动清除。拉取代码库变更时,n8n 会通知您存在过期资源,并询问是否执行删除操作。

拉取操作可能导致工作流与凭证所有者变更#

从 Git 拉取至 n8n 实例时,系统会尝试将工作流与凭证匹配至相应用户或项目。

原所有者为用户时:

  • 若双方实例存在相同所有者(邮箱匹配),则保持所有者不变
  • 若原所有者在新实例中不存在,n8n 将执行拉取操作的用户设为工作流所有者

原所有者为项目时:

  • n8n 尝试将原项目名称匹配至新实例中的项目
  • 若无匹配项目,系统将创建同名新项目,指定当前用户为项目所有者,并将工作流与凭证导入该项目

拉取操作可能引发短暂服务中断#

若拉取变更涉及活跃工作流,n8n 会在拉取过程中暂停该工作流,完成后重新激活。此操作可能导致工作流出现数秒服务中断。

n8n 角色权限控制推送权限

需具备实例所有者、实例管理员或项目管理员权限方可向 Git 推送变更。

推送操作步骤:

  1. 在主菜单中点击 推送 推送图标

    视图参考 菜单收起时的拉取与推送按钮

    菜单收起时的拉取与推送按钮

    菜单展开时的拉取与推送按钮

    菜单展开时的拉取与推送按钮

  • 工作流(含标签及工作流所有者邮箱),可选择性推送
  • 凭证存根(ID、名称、类型)
  • 变量存根(ID 与名称)
  • 项目
  • 文件夹

合并行为与冲突处理#

n8n 采用预设的源码控制方案,自动解析凭证与变量的合并冲突,但无法检测工作流冲突。

工作流#

推送或拉取时需明确指定工作流处理方式,Git 代码库作为最终依据。

拉取时若检测到本地工作流与 Git 版本存在差异,系统将提示本地版本将被覆盖。请谨慎操作以避免有效变更丢失。

推送时本地工作流将覆盖 Git 版本,请确保持有最新版本,否则可能覆盖近期变更。

防范措施:

  • 完成工作流修改后立即推送至 Git,此时拉取操作可安全执行
  • 设计单向流转的源码控制方案(例如:在开发实例编辑→推送至 Git→拉取至生产实例),避免在生产实例直接编辑后推送
  • 按需选择工作流推送,避免全量推送
  • 谨慎手动修改 Git 代码库中的文件

凭证、变量与工作流标签#

凭证与变量不会产生合并冲突,n8n 会自动选择保留版本。

拉取时:

  • 若标签/变量/凭证不存在,则自动创建
  • 若已存在则保持原状,除非:
    • 通过 API 或外部方式设置了变量值(新值将覆盖现有值)
    • 凭证名称已变更(采用 Git 中的版本)
    • 标签名称已变更(更新标签名称)。注意:标签名称具有唯一性,重命名可能在拉取过程中引发数据库唯一性约束问题

推送时:

  • n8n 将覆盖完整的变量与标签文件
  • 若凭证已存在,系统会覆盖其变更内容,但拉取时不会应用这些变更至现有凭证

使用外部密钥库管理凭证

若需在不同 n8n 环境配置差异化凭证,请使用外部密钥管理功能