合并master到特性分支后,如何避免Git LFS锁冲突?
Git LFS文件锁场景问题解答
一、Git LFS能否区分合并变更与分支内变更?如何避免合并master时被锁拦截?
Git LFS默认的锁检查机制不会自动区分合并带来的变更和分支内的本地编辑——它只检测你推送的分支里是否包含对已锁定文件的修改,不管修改来源是哪里,所以会出现你描述的场景。
要避免这个问题,有两种可行的思路:
针对性调整锁的适用范围:你们是Unity项目,其实只需要对二进制资源(比如
.unity场景文件、.prefab预制体、纹理图集等)启用Git LFS锁,像test.txt这类纯文本文件完全可以不用锁——Git本身就能处理文本文件的合并冲突,没必要用锁限制,从根源上减少这类合并场景的锁冲突。合并时手动规避锁检查:如果必须保留对该文件的锁,开发人员B在合并master到BRA-3后,确认自己没有在该分支修改过
test.txt(只是同步master的内容),可以用以下命令跳过锁检查推送:git push origin BRA-3 --no-verify-lfs或者临时修改本地配置禁用推送锁检查:
git config lfs.pushverify false # 推送完成后可以改回true git config lfs.pushverify true
二、能否禁用推送锁检查,只保留查看锁定状态的功能?
Gitlab自托管环境下,服务器端没有直接提供自定义开关来单独禁用推送锁检查,但可以通过客户端配置实现这个需求:
- 让所有开发者在项目目录下执行以下命令,配置禁用推送时的LFS锁检查:
# 仅当前项目生效 git config lfs.pushverify false # 所有Git项目全局生效 git config --global lfs.pushverify false - 禁用推送检查后,Gitlab的文件锁定查看功能依然正常:在项目的「Repository > 文件」页面,被锁定的文件会显示锁形图标,鼠标悬停就能看到锁定者信息,完全满足你们只需要查看锁定状态的需求。
内容的提问来源于stack exchange,提问作者SolidAlloy
相关产品推荐
相关产品推荐

