可帮助用户在 Git 仓库中高效管理大文件,避免仓库体积膨胀。该项目是命令行扩展及规范,采用 Go 编写,支持多平台,提供文件追踪、迁移等核心功能,简化大文件的 Git 操作流程。【此简介由AI生成】
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 |
Git 大文件存储
Git LFS 是一个命令行扩展工具,同时提供了一套规范,用于在 Git 中管理大文件。
该客户端采用 Go 语言编写,提供预编译的二进制文件,支持 Mac、Windows、Linux 和 FreeBSD 平台。访问官方网站可查看功能概览。
快速入门
安装指南
Linux 系统
Debian 和 RPM 安装包可通过 packagecloud 获取,详见 Linux 安装说明。
macOS 系统
通过 Homebrew 安装已编译好的版本,执行命令 brew install git-lfs 即可。
Windows 系统
Git LFS 已集成在 Git for Windows 发行版中。您也可以通过 Chocolatey 包管理器安装最新版本。
二进制安装
我们为 Linux、macOS、Windows 和 FreeBSD 提供了二进制安装包。安装包内含自动化脚本,可执行以下操作:
- 将 Git LFS 二进制文件安装至系统
$PATH路径。特别提醒 Windows 用户,安装后可能需要重启命令行终端,才能使$PATH变更生效,确保 Git 能正确识别 Git LFS 程序。 - 自动执行
git lfs install命令,完成必要的全局配置。
$ ./install.sh
请注意,Debian 和 RPM 软件包为多种 Linux 发行版及版本构建,支持 amd64 和 i386 架构。
对于 arm64 架构,由于模拟构建成本较高,仅提供 Debian 软件包,且仅适用于较新版本。
从源码构建
- 确保已安装最新版本的 Go、GNU make 以及标准的 Unix 兼容构建环境。
- 在 Windows 系统上,请通过
go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest安装goversioninfo。 - 运行
make命令。 - 将
bin目录下的git-lfs二进制文件放置到系统的可执行路径$PATH或等效位置。 - 每台机器需对 Git LFS 进行一次全局配置,可通过运行以下命令完成:
git lfs install
验证发布版本
发布版本由核心团队成员之一的 OpenPGP 密钥签名。
要获取这些密钥,可运行以下命令,密钥将输出至标准输出:
$ curl -L https://api.github.com/repos/git-lfs/git-lfs/tarball/core-gpg-keys | tar -Ozxf -
获取密钥后,您可下载 sha256sums.asc 文件,并按如下方式验证所需文件:
$ gpg -d sha256sums.asc | grep git-lfs-linux-amd64-v2.10.0.tar.gz | shasum -a 256 -c
为便于分发者使用,我们还提供了更多经过签名的哈希值,存放于 hashes.asc 文件中。这些哈希值采用带标签的 BSD 格式,但仍可通过 Perl 的 shasum 或 GNU 哈希工具进行验证,与 sha256sums.asc 中的哈希值验证方式相同。
使用示例
若要在尚未配置 Git LFS 的 Git 仓库中开始使用 Git LFS,您可以指定希望由 Git LFS 管理的文件。具体操作是_在 Git 仓库内_运行以下命令:
$ git lfs track "*.psd"
(其中 *.psd 是你希望跟踪的文件名模式。你可以在此处了解更多关于此模式语法的信息)。
注意: 模式周围的引号非常重要,以防止 shell 扩展 glob 模式。
在每次调用 git-lfs-track(1) 或 git-lfs-untrack(1) 后,你_必须提交对 .gitattributes 文件的更改_。可以通过运行以下命令完成:
$ git add .gitattributes
$ git commit -m "track *.psd files using Git LFS"
现在,您可以像往常一样与您的 Git 仓库交互,Git LFS 会负责管理大文件。例如,修改名为 my.psd 的文件(之前通过 *.psd 进行跟踪):
$ git add my.psd
$ git commit -m "add psd"
提示: 如果您的仓库历史中已存在大文件,
git lfs track不会追溯追踪它们。要将历史中的现有大文件迁移至 Git LFS,请使用git lfs migrate。例如:
$ git lfs migrate import --include="*.psd" --everything请注意,此操作会重写历史记录并更改仓库中的所有 Git 对象 ID,与此命令的导出版本类似。
更多信息,请阅读
git-lfs-migrate(1)。
您可以确认 Git LFS 正在管理您的 PSD 文件:
$ git lfs ls-files
3c2f7aedfb * my.psd
提交更改后,将文件推送至 Git 远程仓库:
$ git push origin main
Uploading LFS objects: 100% (1/1), 810 B, 1.2 KB/s
# ...
To https://github.com/git-lfs/git-lfs-test
67fcf6a..47b2002 main -> main
注意:Git LFS 在 Linux 上至少需要 Git 1.8.2 版本,在 macOS 上至少需要 1.8.5 版本。
卸载
如果您认为 Git LFS 不适合您,也可以通过 git lfs migrate 命令将您的仓库转换回普通的 Git 仓库。例如:
$ git lfs migrate export --include="*.psd" --everything
请注意,这将重写历史记录并更改仓库中的所有 Git 对象 ID,正如该命令的导入版本一样。
如果因某些原因操作未能成功,请在 issue 中告知我们,我们一定会尽力协助或修复问题。
限制事项
Git LFS 维护了一份当前已知的限制列表,您可在此查阅与编辑。
Git LFS 的源码在其构建系统中采用了 Go modules,因此本项目包含一个定义了 Go 模块路径的 go.mod 文件。然而,我们并不维护稳定的 Go 语言 API 或 ABI,因为 Git LFS 设计为仅作为编译后的二进制工具使用。请勿将 git-lfs 模块导入其他 Go 代码中,也不要将其作为源代码依赖项。
需要帮助?
您可以直接获取特定命令的帮助:
$ git lfs help <subcommand>
官方文档中提供了该工具的命令参考与规范说明。此外,Git LFS 还附带了常见问题解答,解答了一些常见疑问。
若您在使用 Git LFS 过程中遇到问题、存在不确定之处,或希望获取他人关于最佳实践与应用场景的建议,欢迎随时发起讨论。
您也可以随时提交问题,核心团队成员将会予以回复。请务必包含以下信息:
- 执行
git lfs env的输出内容,其中包含有助于调试的仓库关键信息 - 在环境变量中设置
GIT_TRACE=1后重新运行失败命令的日志,这将显示命令崩溃的详细上下文
贡献指南
参与 Git LFS 开发及提交补丁的流程详见 CONTRIBUTING.md。相关项目列表请参阅实现方案维基页。
安全漏洞报告流程请参见 SECURITY.md。
核心团队
以下成员组成了负责项目运营的 Git LFS 核心团队(按字母排序):
| [@chrisd8088][chrisd8088-user] | [@larsxschneider][larsxschneider-user] |
|---|---|
| [![][chrisd8088-img]][chrisd8088-user] | [![][larsxschneider-img]][larsxschneider-user] |
| [PGP 088335A9][chrisd8088-pgp] | [PGP A5795889][larsxschneider-pgp] |
荣誉成员
这些成员曾为 Git LFS 核心团队成员,或为项目作出过重大贡献。没有他们,Git LFS 不可能实现今天的成就(按字母排序):
| [@andyneff][andyneff-user] | [@bk2204][bk2204-user] | [@PastelMobileSuit][PastelMobileSuit-user] | [@rubyist][rubyist-user] | [@sinbad][sinbad-user] | [@technoweenie][technoweenie-user] | [@ttaylorr][ttaylorr-user] |
|---|---|---|---|---|---|---|
| [![][andyneff-img]][andyneff-user] | [![][bk2204-img]][bk2204-user] | [![][PastelMobileSuit-img]][PastelMobileSuit-user] | [![][rubyist-img]][rubyist-user] | [![][sinbad-img]][sinbad-user] | [![][technoweenie-img]][technoweenie-user] | [![][ttaylorr-img]][ttaylorr-user] |
[注:所有图片链接和用户主页链接均保留原始格式未作翻译]