Hub documentation
拉取请求和讨论
拉取请求和讨论
Hub 中的 Pull requests 和 Discussions 允许用户对仓库进行社区贡献。Pull requests 和 discussions 在所有仓库类型中的工作方式相同。
从宏观层面来看,其目标是构建一个更简化的版本,类似于其他 Git 托管平台(如 GitHub)的 PR 和 Issues:
- 不涉及任何分支:贡献者直接推送到源仓库上的特殊
ref分支。 - 讨论和 PR 之间没有严格的界限:它们本质上是一样的,因此显示在相同的列表中。
- 它们针对机器学习(即模型/数据集/空间仓库)进行了优化,而非任意仓库。
请注意,Pull Requests 和讨论可以在仓库设置中启用或禁用
列表
通过访问任意仓库中的社区选项卡,您可以查看所有讨论和拉取请求。您还可以进行筛选,仅查看处于打开状态的项目。

查看
Discussion 页面允许您查看来自不同用户的评论。如果是 Pull Request,您可以前往 Files changed 选项卡查看所有更改。

编辑讨论 / 拉取请求标题
如果您已提交 PR 或讨论,是仓库的作者,或拥有该仓库的写入权限,则可以通过点击铅笔按钮来编辑讨论标题。
固定讨论 / 拉取请求
如果您对某个仓库具有写入权限,则可以置顶讨论和 Pull Requests。被置顶的讨论会显示在所有讨论的顶部。


锁定讨论 / 拉取请求
如果您对某个仓库具有写入权限,则可以锁定讨论或 Pull Requests。讨论被锁定后,之前的评论仍然可见,但用户将无法添加新的评论。


评论的编辑与审核
如果您撰写了评论或对仓库具有写入权限,可以从评论框右上角的上下文菜单中编辑评论内容。


编辑完评论后,评论上方会出现一个新链接。该链接显示编辑历史。


你也可以隐藏评论。隐藏评论后无法撤销,任何人都将无法再查看或编辑其内容。

另请参阅 内容审核,了解如何举报不当评论。
我可以在评论和讨论中使用 Markdown 和 LaTeX 吗?
是的!你可以使用 Markdown 为评论添加格式。此外,你还可以使用 LaTeX 进行数学排版,你的公式会先通过 KaTeX 渲染,然后再在 Markdown 中解析。
对于 LaTeX 公式,您必须使用以下分隔符:
$$ ... $$用于显示模式\\(...\\)用于行内模式(斜杠和括号之间没有空格)。
如何在本地管理 Pull requests?
假设你的 PR 编号是 42。
git fetch origin refs/pr/42:pr/42
git checkout pr/42
# Do your changes
git add .
git commit -m "Add your change"
git push origin pr/42:refs/pr/42草稿模式
在“高级模式”中从零开始创建新的 Pull request 时,草稿模式是默认状态。在此状态下,其他贡献者会知道您的 Pull request 仍在开发中,且无法合并。当您的分支准备就绪时,只需点击“Publish”按钮,即可将 Pull request 的状态更改为“Open”。请注意,一旦发布,就无法再返回草稿模式。
删除 Pull request ref
当 Pull request 被关闭或合并后,您可以删除其关联的 git ref(存储该 PR 提交的分支),以释放存储空间。
在关闭或合并 PR 后,您会在讨论区底部看到一条通知,显示删除该 ref 后可释放的预估存储空间。点击“Delete ref”按钮即可永久删除该 PR 的 git ref 并回收存储空间。

当主分支经过压缩(squash)且后续删除了某些文件时,这一点尤为有用。即使这些文件并非由该 PR 本身添加,它们仍会保留在 PR 分支的历史记录中,占用本可释放的存储空间。
删除 PR ref 是不可逆的。删除后,您将无法再在本地获取或检出该 PR 的提交。
Pull requests 高级用法
在 git 仓库中,更改存储在哪里?
我们的 Pull requests 不使用 fork 和 branch,而是使用直接存储在源仓库中的自定义“分支”,称为 refs。
Git 引用是 git 的内部机制,它已经用于存储标签和分支。
使用自定义 refs(例如 refs/pr/42)而非分支的优势在于,克隆仓库的人(包括仓库“所有者”)默认不会获取这些 refs,但仍可按需获取。
获取所有 Pull requests:献给 git 魔法师 🧙♀️
您可以调整本地的 refspec 以获取所有 Pull requests:
- 获取
git fetch origin "refs/pr/*:refs/remotes/origin/pr/*"- 创建一个跟踪该引用的本地分支
git checkout pr/{PR_NUMBER}
# for example: git checkout pr/42- 如果您进行了本地更改,要将其推送到 PR 分支:
git push origin pr/{PR_NUMBER}:refs/pr/{PR_NUMBER}
# for example: git push origin pr/42:refs/pr/42