跳转至

推送和拉取#

如果您的 n8n 实例连接到 Git 仓库,您需要保持您的工作与 Git 同步。

本文档假设您对 Git 概念和术语有一定的了解。有关 n8n 与 Git 工作方式的介绍,请参阅 Git 与 n8n

建议:不要在同一个 n8n 实例上推送和拉取

您可以从实例向分支推送工作,并拉取到同一实例。n8n 不建议这样做。为了降低合并冲突和覆盖工作的风险,请尝试创建一个工作只朝一个方向流动的流程:要么到 Git,要么从 Git,但不要双向。

获取其他人的工作#

n8n 角色控制哪些用户可以拉取(获取)更改

您必须是实例所有者或实例管理员才能从 Git 拉取更改。

要从 Git 拉取工作,请在主菜单中选择拉取 拉取图标

View screenshot

Pull and push buttons when menu is closed
Pull and push buttons when menu is closed

Pull and push buttons when menu is open
Pull and push buttons when menu is open

n8n 可能会显示关于覆盖本地更改的警告。选择拉取并覆盖以用 Git 中的内容覆盖您的本地工作。

当更改包含新的变量或凭证存根时,n8n 会通知您需要在使用它们之前为这些项目填充值。

如何处理已删除的资源

当从仓库中删除工作流、凭证、变量和标签时,您的本地版本的这些资源不会自动删除。相反,当您拉取仓库更改时,n8n 会通知您任何过时的资源,并询问您是否要删除它们。

拉取时工作流和凭证所有者可能会更改#

当您从 Git 拉取到 n8n 实例时,n8n 尝试将工作流和凭证分配给匹配的用户或项目。

如果原始所有者是用户:

如果同一所有者在两个实例上都可用(匹配电子邮件),所有者保持不变。如果原始所有者不在新实例中,n8n 将执行拉取的用户设置为工作流所有者。

如果原始所有者是项目

n8n 尝试将原始项目名称与新实例上的项目名称进行匹配。如果不存在匹配的项目,n8n 会使用该名称创建一个新项目,将当前用户分配为项目所有者,并将工作流和凭证导入到项目中。

拉取可能导致短暂的服务中断#

如果您对活动的工作流拉取更改,n8n 会在拉取时将工作流设置为非活动状态,然后重新激活它。这可能会导致工作流几秒钟的停机时间。

将您的工作发送到 Git#

n8n 角色控制哪些用户可以推送更改

您必须是实例所有者、实例管理员或项目管理员才能向 Git 推送更改。

向 Git 推送工作:

  1. 在主菜单中选择 推送 Push icon

    View screenshot

    Pull and push buttons when menu is closed
    Pull and push buttons when menu is closed

    Pull and push buttons when menu is open
    Pull and push buttons when menu is open

  2. 提交并推送更改 模态框中,选择您要推送的工作流。您可以按状态(新建、修改、删除)过滤并搜索工作流。n8n 会自动推送标签、变量和凭证存根。

  3. 输入提交消息。这应该是对您正在进行的更改的一句话描述。
  4. 选择 提交并推送。n8n 会将工作发送到 Git,并在完成时显示成功消息。

提交的内容#

n8n 向 Git 提交以下内容:

  • 工作流,包括它们的标签和工作流所有者的电子邮件地址。您可以选择要推送的工作流。
  • 凭证存根(ID、名称、类型)
  • 变量存根(ID 和名称)
  • 项目
  • 文件夹

合并行为和冲突#

n8n 的源码控制实现是有主见的。它会自动解决凭证和变量的合并冲突。n8n 无法检测工作流上的冲突。

工作流#

在推送或拉取时,您必须明确告诉 n8n 如何处理工作流。Git 仓库充当真实数据来源。

拉取时,您可能会收到警告,说您的工作流本地副本与 Git 不同,如果您接受,您的本地副本将被覆盖。拉取时要小心不要丢失相关的更改。

当您推送时,您的本地工作流将覆盖 Git 中的内容,因此请确保您拥有最新版本,否则您可能会覆盖最近的更改。

为了防止上述问题,您应该在完成工作流的工作后立即将更改推送到工作流。然后拉取就是安全的。

为了避免数据丢失:

  • 设计您的源码控制设置,使工作流按一个方向流动。例如,在开发实例上进行编辑,推送到 Git,然后拉取到生产。不要在生产实例上进行编辑并推送它们。
  • 不要推送所有工作流。选择您所需的。
  • 谨慎对待在 Git 仓库中手动编辑文件。

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

凭证和变量不会有合并问题,因为 n8n 会选择要保留的版本。

拉取时:

  • 如果标签、变量或凭证不存在,n8n 会创建它。
  • 如果标签、变量或凭证已经存在,n8n 不会更新它,除非:
    • 您使用 API 或外部设置变量的值。新值会覆盖任何现有值。
    • 凭证名称已更改。n8n 使用 Git 中的版本。
    • 标签的名称已更改。n8n 更新标签名称。重命名标签时要小心,因为标签名称是唯一的,这在拉取过程中可能会导致唯一性数据库问题。

推送时:

  • n8n 覆盖整个变量和标签文件。
  • 如果凭证已经存在,n8n 会用更改覆盖它,但在拉取时不会将这些更改应用于现有凭证。

使用外部机密库管理凭证

如果您需要在不同的 n8n 环境中使用不同的凭证,请使用外部机密

此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持