如何仅更新并提交文件权限?执行Git命令后权限显示异常求解
问题原因及解决方法
原因分析
- Windows文件系统限制:NTFS/FAT文件系统不支持Unix-style的执行权限位,本地
ls显示的rwxr-xr-x只是Git Bash模拟出的权限,并非文件系统本身的权限设置。 - Git默认配置:Windows环境下Git默认设置
core.filemode=false,会忽略文件权限的变化,不会将权限变更纳入版本追踪范围。 - 未提交权限变更:
git update-index --chmod=+x docker.sh仅修改了Git索引中的权限标记,但你并未将这个变更提交到版本库,git ls-tree HEAD查看的是已提交到HEAD的历史内容,所以权限还是原来的100644。
解决步骤
- 开启仓库的权限追踪:
在Git Bash中执行命令,开启当前仓库的文件权限追踪:git config core.filemode true - 标记权限并提交变更:
# 标记文件为可执行 git update-index --chmod=+x docker.sh # 将权限变更加入索引 git add docker.sh # 提交变更到本地仓库 git commit -m "Add execute permission to docker.sh" - 验证权限变更:
执行以下命令查看最新提交的文件权限,此时应该显示100755:git ls-tree HEAD docker.sh - 推送到Bitbucket:
git push
内容的提问来源于stack exchange,提问作者MikiBelavista
相关产品推荐
相关产品推荐

