Files
openidea/docs/zh/guide/github.mdx
T

145 lines
9.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "GitHub"
description: "通过 GitHub CLI 审查、创建、签出和合并 GitHub 拉取请求,并克隆自己的仓库。"
---
OpenIDEA 通过 [GitHub CLI](https://cli.github.com)(`gh`)对接 GitHub:登录沿用 gh 的登录状态,API 调用都走 `gh api`。OpenIDEA 自己没有账户管理和令牌输入框,也不保存任何凭据。
## 准备工作
<Steps>
<Step title="安装 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)中查找。
</Step>
<Step title="登录">
在终端运行 `gh auth login`。未登录时打开 **拉取请求** 工具窗口,会显示 **未登录 GitHub** 和 **运行 gh auth login**
按钮,点击后在内置终端中执行该命令。完成后点 **重试**。
</Step>
<Step title="打开带 GitHub 远程的项目">
项目需要有一个指向 `github.com` 的 Git 远程。只有一个 GitHub 远程时自动连接;有多个时,工具窗口会让你选择
**仓库**,选择按项目记住。之后要切换,可在工具窗口的 `⋮` 菜单中选 **更改仓库或账户…**。
</Step>
</Steps>
<Note>只支持 `github.com`,不支持 GitHub Enterprise、GitLab 和 Bitbucket。</Note>
## 菜单与快捷键
**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(重新运行作业、查看日志)。