Hub documentation

拉取请求和讨论

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

拉取请求和讨论

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:

  1. 获取
git fetch origin "refs/pr/*:refs/remotes/origin/pr/*"
  1. 创建一个跟踪该引用的本地分支
git checkout pr/{PR_NUMBER}
# for example: git checkout pr/42
  1. 如果您进行了本地更改,要将其推送到 PR 分支:
git push origin pr/{PR_NUMBER}:refs/pr/{PR_NUMBER}
# for example: git push origin pr/42:refs/pr/42
Update on GitHub