本地 git lfs 仓库
今天和Grok聊天,偶然得知Git LFS支持standalone file transfer adapter,也就是不通过 HTTP,而是使用文件协议或本地目录,于是便想尝试一下。
准备工作
在 macOS 上,使用 Homebrew 安装 lfs,然后安装全局钩子:
brew install git-lfs |
接下来选择一个目录作为 LFS 对象存储,例如 ~/Projects/git-lfs-storage 并初始化为 bare 仓库,否则会报 git rev-parse --git-dir 错误。初始化bare仓库这一步很关键,Grok 犟得很,非说不用初始化,让我浪费了很多时间。
测试
- 创建新仓库:
mkdir ~/lfstest && cd ~/lfstest && git init。 - 添加大文件:例如
echo "test" > bigfile.bin。
- 配置追踪规则:
git lfs track "*.bin"。这一步会自动创建.gitattributes并添加内容*.bin filter=lfs diff=lfs merge=lfs -text。 - 配置
.lfsconfig,使用git config -f .lfsconfig lfs.url "file:///path/to/git-lfs-storage",即file://协议加上 路径/User/$USER/git-lfs-storage。 - 然后把文件添加到git仓库并提交:
git add .gitattributes bigfile.bin .lfsconfig && git commit -m "init"。这里一定要把.lfsconfig添加到 git 中,否则之后 pull 的时候会出现 smudge 错误。 - 正常添加远程 bare 仓库,然后 push。
注意点
- 需要
git init --barelfs 的存储仓库 - 需要把
.lfsconfig提交到远程仓库