Git在ecryptfs挂载分区遇chmod错误,如何让Git忽略该错误?
解决Git在ecryptfs分区上的chmod权限错误
问题出在:你之前设置的core.fileMode=false只能让Git忽略工作区文件的权限变更,但Git在操作仓库配置文件(比如.git/config.lock)时,还是会尝试修改文件权限,而ecryptfs分区不支持chmod操作,所以才会报错。
下面是几种可行的解决办法:
临时解决:执行命令前加环境变量
直接在Git命令前加环境变量,让Git启动时就加载禁止chmod的配置:GIT_CONFIG_PARAMETERS="core.fileMode=false core.sharedRepository=umask" git remote add origin ssh://user@example.com/opt/git/repocore.sharedRepository=umask会让Git用当前用户的umask值创建文件,不会主动执行chmod。全局永久配置
如果所有仓库都需要适配这种分区,直接修改全局Git配置:git config --global core.fileMode false git config --global core.sharedRepository umask之后所有Git操作都会跳过不必要的chmod尝试。
单个仓库提前配置
如果还没初始化仓库,先在目标目录里初始化并配置好:git init git config core.fileMode false git config core.sharedRepository umask再执行
git remote add,这时候本地配置已经生效,不会触发chmod错误。
之前的设置无效是因为:你直接执行git remote add时,Git需要创建.git/config.lock来修改配置,这个阶段Git还没读取本地仓库的core.fileMode配置(毕竟配置文件正在被修改),所以本地配置没起作用;就算全局只设了core.fileMode=false,缺了core.sharedRepository的话,Git还是会试着改锁文件的权限,照样报错。
内容的提问来源于stack exchange,提问作者ealfonso
相关产品推荐
相关产品推荐

