文章目录分享软件要求window环境Git LFS 安装关联 Git LFS 和 SourceTree【lock】和【unlock】的操作后台查看LFS文件状态防老六不安装LFS直接提交分享通过网盘分享的文件SourceTreeGit LFS.zip提取码: cyr6软件要求window环境【sourcetree 3.0.0 下载】。【Git LFS 3.7.1 下载】。Git LFS 安装安装提示其他的可以选择默认安装选项。安装完打开 【sourcetree】打开命令模式执行git lfs install项目仓库下添加配置文件.gitattributes# 所有的 Excel 文件使用 LFS 存储并开启本地只读锁定 (lockable) *.xlsx filterlfs difflfs mergelfs -text lockable *.xls filterlfs difflfs mergelfs -text lockable *.xlsm filterlfs difflfs mergelfs -text lockable *.xlsb filterlfs difflfs mergelfs -text lockable关联 Git LFS 和 SourceTree双击【allow_lfs_script.bat】允许系统执行 lfs 的脚本。将 【lfs_tool.bat】脚本放在一个不会误删的地方路径名不要有中文。打开【sourcetree】顶部菜单【工具-选项】设置自定义操作的命令点击添加分别添加【LFS Lock】和 【LFS Unlock】钩子Lock钩子参数 lock $REPO $FILE your_nameUnLock参数unlock $REPO $FILE your_name【lock】和【unlock】的操作方法一对于有提交记录的文件右键选择方法二复制要锁定的文件路径打开shell执行git lfs lock|unlock file_path方法三 显示所有的项目文件在项目文件中选择后台查看LFS文件状态登录 gitea 或 gitlab 文件后台防老六不安装LFS直接提交LFS 最大风险不是用错而是“别人不用”放到仓库 hooks 目录/data/git/repositories/用户/仓库.git/hooks/pre-receive服务器直接安装 hook 脚本比如 excel 必须走 lfs #!/bin/bash# 配置 # 需要强制走 LFS 的文件类型ENFORCE_LFS_EXTENSIONSxlsx xls# LFS pointer 标识LFS_SIGNATUREgit-lfs.github.com/spec# 主逻辑 whilereadoldrev newrev refnamedo# 新分支oldrev 全0处理if[$oldrev0000000000000000000000000000000000000000];thenrange$newrevelserange$oldrev$newrevfi# 遍历变更文件forfilein$(gitdiff-tree-r--no-commit-id --name-only $range);do# 获取扩展名ext${file##*.}# 判断是否在强制列表中forenforce_extin$ENFORCE_LFS_EXTENSIONS;doif[$ext$enforce_ext];then# 获取 blob idblob$(gitls-tree-r$newrev$file|awk{print $3})if[-z$blob];thencontinuefi# 读取前几行判断是否 LFS pointercontent$(gitcat-file-p$blob|head-n5)echo$content|grep-q$LFS_SIGNATUREif[$?-ne0];thenecho❌ Push rejected:echoFile $file must be tracked by Git LFS (.gitattributes missing or not applied)echoecho Fix:echo git lfs track\*.${ext}\echo git add .gitattributesecho git add\$file\echo git commit -m\fix: use lfs\echo git pushexit1fifidonedonedoneexit0给权限chmodx pre-receive
(009) SourceTree: 使用Git LFS 增加文件锁定和解锁的功能
文章目录分享软件要求window环境Git LFS 安装关联 Git LFS 和 SourceTree【lock】和【unlock】的操作后台查看LFS文件状态防老六不安装LFS直接提交分享通过网盘分享的文件SourceTreeGit LFS.zip提取码: cyr6软件要求window环境【sourcetree 3.0.0 下载】。【Git LFS 3.7.1 下载】。Git LFS 安装安装提示其他的可以选择默认安装选项。安装完打开 【sourcetree】打开命令模式执行git lfs install项目仓库下添加配置文件.gitattributes# 所有的 Excel 文件使用 LFS 存储并开启本地只读锁定 (lockable) *.xlsx filterlfs difflfs mergelfs -text lockable *.xls filterlfs difflfs mergelfs -text lockable *.xlsm filterlfs difflfs mergelfs -text lockable *.xlsb filterlfs difflfs mergelfs -text lockable关联 Git LFS 和 SourceTree双击【allow_lfs_script.bat】允许系统执行 lfs 的脚本。将 【lfs_tool.bat】脚本放在一个不会误删的地方路径名不要有中文。打开【sourcetree】顶部菜单【工具-选项】设置自定义操作的命令点击添加分别添加【LFS Lock】和 【LFS Unlock】钩子Lock钩子参数 lock $REPO $FILE your_nameUnLock参数unlock $REPO $FILE your_name【lock】和【unlock】的操作方法一对于有提交记录的文件右键选择方法二复制要锁定的文件路径打开shell执行git lfs lock|unlock file_path方法三 显示所有的项目文件在项目文件中选择后台查看LFS文件状态登录 gitea 或 gitlab 文件后台防老六不安装LFS直接提交LFS 最大风险不是用错而是“别人不用”放到仓库 hooks 目录/data/git/repositories/用户/仓库.git/hooks/pre-receive服务器直接安装 hook 脚本比如 excel 必须走 lfs #!/bin/bash# 配置 # 需要强制走 LFS 的文件类型ENFORCE_LFS_EXTENSIONSxlsx xls# LFS pointer 标识LFS_SIGNATUREgit-lfs.github.com/spec# 主逻辑 whilereadoldrev newrev refnamedo# 新分支oldrev 全0处理if[$oldrev0000000000000000000000000000000000000000];thenrange$newrevelserange$oldrev$newrevfi# 遍历变更文件forfilein$(gitdiff-tree-r--no-commit-id --name-only $range);do# 获取扩展名ext${file##*.}# 判断是否在强制列表中forenforce_extin$ENFORCE_LFS_EXTENSIONS;doif[$ext$enforce_ext];then# 获取 blob idblob$(gitls-tree-r$newrev$file|awk{print $3})if[-z$blob];thencontinuefi# 读取前几行判断是否 LFS pointercontent$(gitcat-file-p$blob|head-n5)echo$content|grep-q$LFS_SIGNATUREif[$?-ne0];thenecho❌ Push rejected:echoFile $file must be tracked by Git LFS (.gitattributes missing or not applied)echoecho Fix:echo git lfs track\*.${ext}\echo git add .gitattributesecho git add\$file\echo git commit -m\fix: use lfs\echo git pushexit1fifidonedonedoneexit0给权限chmodx pre-receive