让Git跟随symlink(符号链接)的实现方法或同类问题替代方案
Git跟随symlink推送LFS资源的解决方案
方案1:绑定挂载(最优适配你的场景)
Git默认不会跟随符号链接解析实际目录内容,硬链接又无法跨存储分区使用,绑定挂载是完美替代symlink的方案:
- 操作步骤:
- 先删除你之前在代码根目录创建的symlink:
rm <代码根目录>/<图像目录名> - 在代码根目录创建同名空目录作为挂载点:
mkdir <代码根目录>/<图像目录名> - 执行绑定挂载,将外接硬盘的图像目录映射到代码目录下的挂载点:
mount --bind /<外接硬盘挂载路径>/<媒体资源图像目录> <代码根目录>/<图像目录名> - 如需开机自动生效,在
/etc/fstab中添加如下配置:/<外接硬盘挂载路径>/<媒体资源图像目录> <代码根目录>/<图像目录名> none bind 0 0
- 先删除你之前在代码根目录创建的symlink:
- 生效效果:
对Git来说该挂载点就是普通目录,所有新增、修改的图像文件都会被正常识别,可配合现有LFS规则直接推送至远程仓库;对运行的代码来说访问路径和原来使用symlink完全一致,无需修改任何业务逻辑;所有实际文件均存储在外接硬盘中,不会占用系统盘存储空间。
方案2:配置Git跟随symlink提交内容(仅适合单人维护场景)
如果不想调整挂载配置,可通过Git参数直接跟随symlink提交实际文件内容:
- 操作方式:提交时添加
--follow-symlinks参数即可:
也可全局配置关闭symlink识别:git add --follow-symlinks <图像目录名>/*git config core.symlinks false,后续提交都会自动跟随symlink解析内容 - 注意事项:
该方案会直接提交symlink指向的实际文件内容,而非symlink本身,其他协作者拉取代码时会直接把文件写入代码目录,不会同步你的外接硬盘存储逻辑,仅适合单人独占维护的仓库使用。
替代方案:自定义Git LFS存储路径(适配多协作者场景)
如果你的仓库需要多人协作,可直接把图像目录放在代码仓库内,通过修改LFS存储路径实现大文件存储在外接硬盘:
- 操作步骤:
- 正常将图像目录纳入仓库管理,保留现有LFS追踪规则
- 执行命令配置LFS文件存储路径到外接硬盘:
git config lfs.storage /<外接硬盘挂载路径>/LFS存储目录
- 生效效果:
所有LFS管理的大文件都会存储到外接硬盘指定目录,不会占用系统盘空间;无需维护symlink或挂载逻辑,Git操作和普通仓库完全一致;其他协作者不需要调整配置也能正常拉取使用LFS资源。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

