下一步
以下章节重点介绍一些特性与补充信息,帮助你充分利用 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 LFS 与 huggingface_hub CLI。当仓库包含 LFS 文件时,fork 或 rebase 不能使用常规 Git 方法,否则会破坏 LFS 指针。fork 的耗时视带宽而定,因为需要下载并重新上传所有 LFS 文件。
例如,假设存在上游仓库 upstream,你刚在 Hub 上创建了自己的仓库 myfork,操作步骤如下:
-
在 https://huggingface.co 创建目标仓库(例如 myfork)。
-
克隆你的 fork 仓库:
git clone [email protected]:me/myfork
- 拉取非 LFS 文件:
cd myfork
git lfs install --skip-smudge --local # 仅影响当前克隆
git remote add upstream [email protected]:friend/upstream
git fetch upstream
- 拉取大文件(耗时取决于下载带宽):
git lfs fetch --all upstream # 耗时取决于下载带宽
4.a 若希望完全覆盖 fork 的历史(通常只有初始提交),执行:
git reset --hard upstream/main
4.b 若希望 rebase 而非覆盖,执行以下命令并解决冲突:
git rebase upstream/main
- 准备推送 LFS 文件:
git lfs install --force --local # 重新安装 LFS 钩子
hf lfs-enable-largefiles . # 当文件超过 5GB 时需要
- 最后推送:
git push --force origin main # 耗时取决于上传带宽
至此,你便在 Hub 上拥有了自己的 fork 或完成 rebase 的仓库!