如何从 git 索引中删除仅文件模式

如何从 git 索引中删除仅文件模式

我初始化了 git 存储库,后来意识到 git 索引了文件模式,例如 777 或 644,当文件模式更改时,git 显示模式更改并“想要”提交文件,只是因为其模式已更改。如何删除此类文件的 git 索引(历史记录)的文件模式“记录”,同时保存“真实”更改历史记录 - 更改其内容的历史记录?

答案1

您可以通过设置core.fileMode为 false 来部分实现此目的:

git config core.fileMode false

这将导致可执行位(并且只有那个位)被忽略。

引用文档git-config:

告诉 Git 是否要尊重工作树中文件的可执行位。

当签出标记为可执行的文件或签出带有可执行位的非可执行文件时,某些文件系统会丢失可执行位。git 克隆(1)或者git-init(1)探测文件系统以查看它是否正确处理可执行位,并且该变量会根据需要自动设置。

然而,存储库可能位于正确处理文件模式的文件系统上,并且该变量在创建时设置为 true,但稍后可以从丢失文件模式的另一个环境进行访问(例如,通过 CIFS 挂载导出 ext4、访问 Cygwin使用适用于 Windows 或 Eclipse 的 Git 创建存储库)。在这种情况下,可能需要将此变量设置为错误的。看git-更新-索引(1)

默认值为 true(当配置文件中未指定 core.filemode 时)。

这是否是一个好主意是另一场争论......

相关内容