This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

使用 EAS CLI 管理分支和渠道

编辑页面

了解如何将分支链接到渠道,并使用 EAS CLI 发布更新。


EAS Update 的工作方式是将 分支 关联到 渠道。渠道在构建时指定,并存在于构建的原生代码中。分支是一个按顺序排列的更新列表,类似于 Git 分支,而 Git 分支是一个按顺序排列的提交列表。借助 EAS Update,我们可以将任意渠道链接到任意分支,从而让不同的构建获取不同的更新。

上面的图示展示了这种链接关系。这里,我们有一个构建,其 "production" 渠道链接到了名为 "version-1.0" 的分支。准备好之后,我们可以调整渠道–分支指针。设想我们在名为 "version-2.0" 的分支上还有更多已测试并准备好的修复。我们可以更新这个链接,让 "version-2.0" 分支对所有使用 "production" 渠道的构建可用。

检查项目更新的状态

查看渠道

查看所有渠道:

Terminal
- eas channel:list

查看特定渠道:

Terminal
- eas channel:view [channel-name]

# 示例
- eas channel:view production

创建渠道:

Terminal
- eas channel:create [channel-name]

# 示例
- eas channel:create production

查看分支

查看所有分支:

Terminal
- eas branch:list

查看特定分支及其更新列表:

Terminal
- eas branch:view [branch-name]


# 示例
- eas branch:view version-1.0

查看更新

查看特定更新:

Terminal
- eas update:view [update-group-id]

# 示例
- eas update:view dbfd479f-d981-44ce-8774-f2fbcc386aa

更改项目更新的状态

创建并发布一个新更新

Terminal
- eas update --branch [branch-name] --message "..."

# 示例
- eas update --branch version-1.0 --message "Fixes typo"

如果你正在使用 Git,我们可以使用 --auto 标志自动填充分支名称和消息。这个标志会使用当前 Git 分支作为分支名称,并使用最新的 Git 提交信息作为消息。

Terminal
- eas update --auto

删除分支

Terminal
- eas branch:delete [branch-name]

# 示例
- eas branch:delete version-1.0

重命名分支

重命名分支不会断开任何渠道–分支链接。如果你有一个名为 "production" 的渠道链接到名为 "version-1.0" 的分支,然后你将名为 "version-1.0" 的分支重命名为 "version-1.0-new",那么 "production" 渠道将会链接到现在已重命名的分支 "version-1.0-new"。

Terminal
- eas branch:rename --from [branch-name] --to [branch-name]

# 示例
- eas branch:rename --from version-1.0 --to version-1.0-new

在分支内重新发布之前的更新

我们可以让之前的更新立即对所有用户可用。此命令会获取之前的更新并再次发布,使其成为该分支上的最新更新。当用户重新打开应用时,应用会看到重新发布后的更新并下载它。

Terminal
- eas update:republish --group [update-group-id]
- eas update:republish --branch [branch-name]

# 示例
- eas update:republish --group dbfd479f-d981-44ce-8774-f2fbcc386aa
- eas update:republish --branch version-1.0

暂停渠道上的更新

暂停渠道会阻止 EAS Update 向在该渠道上检查更新的构建提供更新。

暂停操作可以撤销。取消暂停渠道后,该渠道的更新和任何正在进行的分阶段发布都会恢复。

Terminal
- eas channel:pause [channel-name]

# 示例
- eas channel:pause production

不指定渠道名称运行此命令,可以从列表中选择一个渠道。在 CI 中,使用 --non-interactive 传入渠道名称,或使用 --json 以 JSON 格式打印渠道。--json 标志隐含了 --non-interactive。

渠道暂停期间会发生什么?
  • 暂停渠道上的每个客户端仍会检查更新,但不会收到新更新。对于已暂停的渠道,EAS 通常会以不带响应正文的 HTTP 204 响应,因此这些检查几乎不会占用带宽。
  • 每个客户端都会继续运行其已有的最新更新。如果客户端从未收到较新的更新,这可能是随构建一起发布的代码。用户看到的应用运行状态不会发生变化。
  • 由于没有客户端下载更新,因此渠道暂停期间,月活跃用户的数量不会增加。这可以防止计费用户数量增长。
  • eas channel:view [channel-name] 和 eas channel:list 会将渠道状态显示为已暂停。
  • 你可以继续向分支发布更新。更新会照常存储,并在取消暂停渠道后变为可用。

暂停操作仅适用于单个渠道,因此暂停 production 不会影响 preview 或 development 渠道。暂停生产渠道期间,你可以继续在开发和预览渠道上发布和测试更新。

暂停渠道与回滚有何不同?

暂停会让客户端继续使用当前更新,并阻止它们接收新更新;回滚则会指示客户端运行较早的更新。

  • eas update:rollback 和 eas update:republish 会再次发布之前的更新,使其成为分支上的最新更新。客户端会下载并运行该更新。请参阅回滚。
  • 带有嵌入式选项的 eas update:rollback(也可通过 eas update:roll-back-to-embedded 使用)会发布一条指令,告知客户端停止使用已下载的更新,改为运行构建中嵌入的更新。
  • eas channel:pause 不会发布任何内容,而是指示 EAS 不要为指定渠道发送更新。该渠道上的客户端会继续运行当前已有的最新更新,且在渠道取消暂停之前不会收到新更新。

恢复渠道上的更新

Terminal
- eas channel:resume [channel-name]

# 示例
- eas channel:resume production

通过恢复渠道来取消暂停。该渠道将开始提供与其关联的分支中的更新。该渠道上的任何分阶段发布也会恢复。用户打开应用并检查更新时,会像往常一样收到最新的兼容更新。