> ## Documentation Index
> Fetch the complete documentation index at: https://openidea.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub

> 通过 GitHub CLI 审查、创建、签出和合并 GitHub 拉取请求，并克隆自己的仓库。

OpenIDEA 通过 [GitHub CLI](https://cli.github.com)（`gh`）对接 GitHub：登录沿用 gh 的登录状态，API 调用都走 `gh api`。OpenIDEA 自己没有账户管理和令牌输入框，也不保存任何凭据。

## 准备工作

**1. 安装 gh**

安装 GitHub CLI。OpenIDEA 依次在 `OPENIDEA_GH`（完整路径）、`PATH`，以及
`/opt/homebrew/bin`、`/usr/local/bin`、`/usr/bin`、`/snap/bin`（macOS/Linux）或 `C:\Program Files\GitHub
        CLI\gh.exe`（Windows）中查找。

**2. 登录**

在终端运行 `gh auth login`。未登录时打开 **拉取请求** 工具窗口，会显示 **未登录 GitHub** 和 **运行 gh auth login**
按钮，点击后在内置终端中执行该命令。完成后点 **重试**。

**3. 打开带 GitHub 远程的项目**

项目需要有一个指向 `github.com` 的 Git 远程。只有一个 GitHub 远程时自动连接；有多个时，工具窗口会让你选择
**仓库**，选择按项目记住。之后要切换，可在工具窗口的 `⋮` 菜单中选 **更改仓库或账户…**。

> [!NOTE]
>
> 只支持 `github.com`，不支持 GitHub Enterprise、GitLab 和 Bitbucket。

## 菜单与快捷键

**Git › GitHub** 菜单（编辑器右键菜单的 **Git** 下也有）包含：

* **查看拉取请求**：打开拉取请求工具窗口。
* **创建拉取请求…**
* **签出拉取请求…**：签出选中的拉取请求，未选中时会询问编号。
* **在 GitHub 上打开**：在浏览器中打开选中的拉取请求，或者仓库主页。

| 操作 | macOS | Windows/Linux |
| - | - | - |
| 创建拉取请求…（在拉取请求工具窗口中） | `⌘N` | `Alt+Insert` |
| 刷新列表、拉取请求或时间线 | `⌘R` | `Ctrl+F5` |
| 切换已查看/未查看状态 | `⌘⇧S` | `Ctrl+Shift+S` |

## 浏览拉取请求

**拉取请求** 工具窗口位于左侧。第一个标签页列出仓库的拉取请求，每打开一个拉取请求就多一个 `#N` 标签页。

* **搜索**：输入文本或 GitHub 搜索限定符后按 `Enter`。历史按钮（或 `⌥↓` / `Alt+Down`）显示最近 10 次搜索。
* **快速筛选**（漏斗按钮）：**打开**、**您的拉取请求**、**指派给您**、**审查请求**。
* **筛选条件**：**状态**、**作者**、**标签**、**被指派者**、**审查**、**排序**。在条件上按 `Delete` 或 `Backspace` 可以重置。
* 每一行显示未读标记、标签、状态、合并冲突、被指派者和审阅者头像，以及未解决评论数。

右键拉取请求可选择 **查看拉取请求**、**签出分支**、**在工作树中打开**、**在浏览器中查看拉取请求**、**复制拉取请求 URL** 和 **刷新列表**。

## 拉取请求详情

双击拉取请求（或按 `Enter`）打开详情标签页：

* 标题、状态，以及 **查看时间线** 链接。
* 提交选择器：可以一起看所有提交，也可以逐个提交查看。
* 源分支，提供 **签出**、**在工作树中打开**、**在 Git 日志中显示**、**复制分支名称**。
* 变更文件列表。双击文件打开差异。可以用 **标记为已查看** / **标记为未查看**（或“所有提交”视图中的复选框）标记文件。
* 状态区：检查运行情况（**详细信息…** 列出每个作业，点击在 GitHub 上打开）、合并冲突（**解决** 链接会签出分支并在本地把基础分支合并进来）、必需的审查以及各审阅者状态。

下方按钮取决于你的角色和拉取请求的状态：

| 你的身份 | 按钮 |
| - | - |
| 作者 | **请求审查…**，批准后出现合并按钮，**关闭拉取请求**（在“更多操作”中） |
| 审阅者 | **提交审查…**，批准后可以合并 |
| 其他人 | **将自己设为审查者** |
| 任何人，草稿状态 | **发布拉取请求**（标记为可以审查） |
| 任何人，已关闭 | **重新打开拉取请求** |

合并按钮只提供仓库允许的方式：**合并…**、**压缩并合并…**（这两种可以编辑提交消息）和 **变基**。

## 审查代码

### 在差异视图中评论

拉取请求的差异是合并基础与头提交之间的比较。如果本地缺少拉取请求的引用或基础分支，OpenIDEA 会先获取。

* 鼠标悬停在某行上，点击边栏的 **+** 添加评论；拖动可以选中多行。
* 选择 **开始审查**（评论先挂起，提交审查时一起发出）或 **添加单条评论**。OpenIDEA 会记住你上次的选择。
* 已有的讨论直接显示在对应行下方。在差异设置的 **显示审查讨论** 中选择 **全部**、**仅未解决**（默认）或 **不显示**。
* 差异工具栏有 **刷新审查数据**、**提交审查…**、**上一条评论**、**下一条评论**。过了最后一处变更后，按 `F7` 会跳到拉取请求的下一个文件。

想在打开文件时自动标记为已查看，可以在 **设置 › 版本控制 › GitHub** 中打开 **自动将打开的文件标记为已查看**。

### 提交审查

**提交审查…** 会弹出一个小窗口。可以写一段总结，然后选择 **批准**、**请求更改** 或 **评论**。垃圾桶按钮会丢弃所有挂起的评论。作者不能批准自己的拉取请求，也不能对其请求更改。

### 时间线

**查看时间线** 在编辑器标签页中打开拉取请求的对话：描述、提交、审查、审查讨论和各种事件，最新的在底部。在这里可以：

* 发表评论（`⌘Enter` / `Ctrl+Enter` 发送），支持 `@` 提及补全。
* 编辑或删除自己的评论，添加表情回应。
* 回复审查讨论，并 **解决** 或取消解决。
* 用 **在本地应用** 应用建议的更改，或者用 **提交…** 一步应用并提交。只有签出了拉取请求的分支时才能应用建议。
* 拉取请求合并后，可以在横幅中删除头分支。

### 审查模式

当签出的分支正是某个打开的拉取请求的头分支时，分支微件会显示 `#N on 分支名`，审查模式随之开启：

* 审查讨论直接显示在普通编辑器中，边栏的 **+** 可以添加评论，变更标记以拉取请求的基础为准。
* 编辑器角落的工具栏有 **上一条评论**、**下一条评论** 和 **审查模式** 菜单（**禁用审查模式**、**仅显示未解决的评论**、**显示所有评论**）。
* 编辑器右键菜单中多出 **显示审查差异**。
* 本地分支落后于远程时，分支微件会提供 **更新以启用审查模式…**。

审查模式默认开启，按项目记住开关状态。

## 创建拉取请求

**创建拉取请求…** 会打开一个新建拉取请求的标签页（标题形如“在 owner/repo 新建拉取请求”）：

1. 选择 **基础分支** 和 **头分支**（本地或远程分支；有 fork 时还可以选择仓库）。
2. 检查提交和变更文件。
3. 填写标题和描述。标题默认取唯一提交的主题行或分支名；描述会预先填入仓库的拉取请求模板。
4. 可选：设置 **审阅者:**、**受理人:**、**标签:**。
5. 点击 **创建拉取请求**，或通过旁边的箭头选择 **创建草稿拉取请求**。

如果头分支只存在于本地，OpenIDEA 会询问远程分支名并先推送。如果这两个分支之间已有拉取请求，会提示你直接打开它。

## 签出拉取请求

* **签出分支**（或 **签出拉取请求…**）执行 `gh pr checkout`，来自 fork 的拉取请求也能签出。
* **在工作树中打开** 会在仓库旁边新建一个 Git 工作树（名为 `<repo>_PR_<n>`），签出拉取请求的头提交，并在新窗口中打开。

## 从 GitHub 克隆

**Git › 克隆…** 打开 **克隆仓库** 对话框。在侧栏选择 **GitHub**，会列出你拥有、参与协作或通过组织可以访问的仓库，按最近推送时间排序。用 **搜索仓库** 过滤，双击仓库（或按 `Enter`）即可克隆。URL 默认用 HTTPS；如果 gh 对 github.com 配置的 `git_protocol` 是 `ssh`，则用 SSH。

## Git 日志中的提交检查

Git 日志可以显示每个提交在 GitHub 上的检查状态。在日志的 **视图选项 › 列** 中，或在 **设置 › 版本控制 › 日志** 中打开 **GitHub 提交检查** 列。点击提交的图标列出它的检查运行，再点击某项即可在 GitHub 上打开。

## 暂不支持

* GitHub Enterprise、GitLab、Bitbucket。
* Issue、Gist、通知，以及创建或分享仓库。
* 在 GitHub 上打开文件或某一行、复制永久链接。
* 管理 GitHub Actions（重新运行作业、查看日志）。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.