forge

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Multi-Forge CLI

多代码托管平台CLI

forge
is a single CLI that talks to GitHub, GitLab, Gitea, Forgejo, and Bitbucket Cloud. Commands are modelled on
gh
, so most
gh
invocations work by swapping the binary name. The forge backend is detected from the git remote, so the same command works regardless of where the repo is hosted.
Check
git remote -v
first. If
origin
is not
github.com
, use
forge
rather than
gh
.
forge
是一款可与GitHub、GitLab、Gitea、Forgejo和Bitbucket Cloud交互的单一CLI工具。其命令以
gh
为蓝本,因此大多数
gh
命令只需替换二进制文件名即可在
forge
中使用。工具会从Git远程仓库自动检测代码托管平台后端,因此无论仓库托管在何处,相同的命令都能生效。
请先执行
git remote -v
查看远程仓库信息。如果
origin
不是
github.com
,请使用
forge
而非
gh

Repository selection

仓库选择

The current repo is inferred from the
origin
remote. Override with:
  • -R OWNER/REPO
    or
    -R HOST/OWNER/REPO
    to target a specific repo
  • --remote NAME
    to use a different remote
  • --host HOST
    to force a host
  • --forge-type github|gitlab|gitea|forgejo|bitbucket
    when auto-detection fails
Output is a table by default. Use
-o json
for machine-readable output or
-o plain
for scripting.
当前仓库会从
origin
远程仓库自动推断。可通过以下方式指定其他仓库:
  • -R OWNER/REPO
    -R HOST/OWNER/REPO
    :指定特定仓库
  • --remote NAME
    :使用其他远程仓库
  • --host HOST
    :强制指定代码托管平台
  • --forge-type github|gitlab|gitea|forgejo|bitbucket
    :当自动检测失败时指定平台类型
默认输出格式为表格。使用
-o json
可获得机器可读的输出,使用
-o plain
适合脚本编写场景。

Commands

命令

Authentication:
bash
forge auth login         # store credentials for a domain (interactive)
forge auth status        # list configured domains
Tokens are also read from
GITHUB_TOKEN
,
GITLAB_TOKEN
,
GITEA_TOKEN
,
FORGEJO_TOKEN
,
BITBUCKET_TOKEN
, or
FORGE_TOKEN
.
Pull / merge requests (
mr
is an alias for
pr
):
bash
forge pr list
forge pr view 42
forge pr diff 42
forge pr checkout 42
forge pr create --title "..." --body "..."
forge pr edit 42 --title "..."
forge pr merge 42
forge pr review approve 42
forge pr comment 42 --body "..."
Issues:
bash
forge issue list --state open
forge issue view 17
forge issue create --title "..." --body "..."
forge issue edit 17 --label bug
forge issue close 17
forge issue comment 17 --body "..."
Repositories:
bash
forge repo view
forge repo clone OWNER/REPO
forge repo fork
forge repo list OWNER
forge repo create NAME --private
CI / pipelines:
bash
forge ci list
forge ci view RUN_ID       # prints job IDs
forge ci log JOB_ID
forge ci retry RUN_ID
forge ci cancel RUN_ID
Releases:
bash
forge release list
forge release view v1.2.0
forge release create --tag v1.2.0 --title "..." --body "..."
forge release upload v1.2.0 FILE
forge release download v1.2.0 ASSET
Other resources:
bash
forge label list | create | edit | delete
forge milestone list | create | edit | close
forge branch list | delete
forge notification list | read
forge secret set --name NAME --value VALUE
forge deploy-key add | list | delete
forge collaborator add | list | remove
forge status list SHA
forge file cat PATH                # print file content (use --ref for non-default branch)
forge file ls [PATH]               # list directory entries
forge search repos QUERY
forge api PATH                     # raw authenticated API request
forge browse                       # open in browser
forge rate-limit
身份验证:
bash
forge auth login         # store credentials for a domain (interactive)
forge auth status        # list configured domains
工具也会从
GITHUB_TOKEN
GITLAB_TOKEN
GITEA_TOKEN
FORGEJO_TOKEN
BITBUCKET_TOKEN
FORGE_TOKEN
环境变量中读取令牌。
拉取/合并请求
mr
pr
的别名):
bash
forge pr list
forge pr view 42
forge pr diff 42
forge pr checkout 42
forge pr create --title "..." --body "..."
forge pr edit 42 --title "..."
forge pr merge 42
forge pr review approve 42
forge pr comment 42 --body "..."
议题:
bash
forge issue list --state open
forge issue view 17
forge issue create --title "..." --body "..."
forge issue edit 17 --label bug
forge issue close 17
forge issue comment 17 --body "..."
仓库:
bash
forge repo view
forge repo clone OWNER/REPO
forge repo fork
forge repo list OWNER
forge repo create NAME --private
CI/流水线:
bash
forge ci list
forge ci view RUN_ID       # prints job IDs
forge ci log JOB_ID
forge ci retry RUN_ID
forge ci cancel RUN_ID
发布:
bash
forge release list
forge release view v1.2.0
forge release create --tag v1.2.0 --title "..." --body "..."
forge release upload v1.2.0 FILE
forge release download v1.2.0 ASSET
其他资源:
bash
forge label list | create | edit | delete
forge milestone list | create | edit | close
forge branch list | delete
forge notification list | read
forge secret set --name NAME --value VALUE
forge deploy-key add | list | delete
forge collaborator add | list | remove
forge status list SHA
forge file cat PATH                # print file content (use --ref for non-default branch)
forge file ls [PATH]               # list directory entries
forge search repos QUERY
forge api PATH                     # raw authenticated API request
forge browse                       # open in browser
forge rate-limit

Unsupported operations

不支持的操作

Not every forge supports every operation. When a backend cannot do something (e.g. Bitbucket milestones),
forge
exits non-zero with an "operation not supported by this forge" error. Treat that as a signal to fall back to the forge's native CLI or web UI rather than retrying.
并非所有代码托管平台都支持所有操作。当后端平台不支持某一操作时(例如Bitbucket的里程碑功能),
forge
会以非零状态退出,并提示“该操作不受此代码托管平台支持”的错误。遇到这种情况,请转而使用平台原生的CLI或网页UI,不要重试。

When to use

使用场景

  • The git remote points at gitlab.com, codeberg.org, gitea.com, bitbucket.org, or a self-hosted instance
  • The user mentions GitLab, Gitea, Forgejo, Codeberg, or Bitbucket
  • A merge request rather than a pull request
  • The same script or workflow needs to run against multiple forges
  • gh
    fails because the repo is not on GitHub
  • Git远程仓库指向gitlab.com、codeberg.org、gitea.com、bitbucket.org或自托管实例时
  • 用户使用GitLab、Gitea、Forgejo、Codeberg或Bitbucket时
  • 需要处理合并请求而非拉取请求时
  • 需要在多个代码托管平台上运行相同的脚本或工作流时
  • gh
    因仓库不在GitHub上而无法使用时