跳到主要内容

下一步

以下章节重点介绍一些特性与补充信息,帮助你充分利用 Hugging Face Hub 上的 Git 仓库。

如何以编程方式管理仓库

Hugging Face 支持通过 huggingface_hub 使用 Python 访问仓库。前文提到的操作(如下载仓库、上传文件)都可以通过该库完成,还提供了许多实用函数!

如果你更倾向直接使用 Git,请继续阅读下文。

进一步学习 Git

若要继续深入学习 Git,可访问 Git 互动教程。想了解更多背景知识,也可以查看 GitHub 的 Git 指南

如何使用分支

若想在多人协作时避免发布未成熟的代码,可以善用 分支。分支允许你将“开发中的”代码与“已准备发布”的代码分离,同时让多位成员并行开发,减少冲突。你可以为实验开辟独立分支,甚至采用团队级的分支管理实践

想学习 Git 分支,可尝试 Learn Git Branching 互动教程

使用标签

Git 允许对提交进行 标签,以标记项目中的里程碑,因此你也可以在 Hub 的仓库中使用标签!想了解如何使用标签,可参考 DevConnected 的这篇文章

使用 Git 标签不仅便于识别重要提交,还可实现 A/B 测试,按特定标签克隆仓库,等等。huggingface_hub 库同样支持操作标签,例如从特定标签提交下载文件

如何复制或 Fork 仓库(含 LFS 指针)

若想复制仓库,可根据是否需要保留 Git 历史选择不同方式。

无 Git 历史的复制

在许多场景中,如果只需获取某个代码库副本而不关心之前的 Git 历史,可使用 Repo Duplicator 快速复制。需要先创建用户访问令牌,相关信息请查阅安全文档

保留 Git 历史的复制(Fork)

若要保留提交历史,复制仓库即称为 fork。你可以 fork 自己的仓库,也可以 fork 他人的项目以便尝试。

请注意,需要提前安装 Git LFShuggingface_hub CLI。当仓库包含 LFS 文件时,fork 或 rebase 不能使用常规 Git 方法,否则会破坏 LFS 指针。fork 的耗时视带宽而定,因为需要下载并重新上传所有 LFS 文件。

例如,假设存在上游仓库 upstream,你刚在 Hub 上创建了自己的仓库 myfork,操作步骤如下:

  1. https://huggingface.co 创建目标仓库(例如 myfork)。

  2. 克隆你的 fork 仓库:

git clone [email protected]:me/myfork
  1. 拉取非 LFS 文件:
cd myfork
git lfs install --skip-smudge --local # 仅影响当前克隆
git remote add upstream [email protected]:friend/upstream
git fetch upstream
  1. 拉取大文件(耗时取决于下载带宽):
git lfs fetch --all upstream # 耗时取决于下载带宽

4.a 若希望完全覆盖 fork 的历史(通常只有初始提交),执行:

git reset --hard upstream/main

4.b 若希望 rebase 而非覆盖,执行以下命令并解决冲突:

git rebase upstream/main
  1. 准备推送 LFS 文件:
git lfs install --force --local # 重新安装 LFS 钩子
hf lfs-enable-largefiles . # 当文件超过 5GB 时需要
  1. 最后推送:
git push --force origin main # 耗时取决于上传带宽

至此,你便在 Hub 上拥有了自己的 fork 或完成 rebase 的仓库!