Git/Veracrypt EOL 地狱 - 不能丢弃修改过的文件

Git/Veracrypt EOL hell - cannot discard modified files

veracrypt 是否在内存中进行任何类型的文件缓存,这可能会阻止对我的 git 配置文件的更改被识别?

长版:我在与 Windows 共享的 veracrypt 分区上有一个存储库。在我的回购协议中尝试强制执行 EOL 时,我看到文件或多或少地任意设置了 EOL。当对我的 .gitattributes 文件进行微不足道的更改时,我会将此更改合并到一个分支,突然间我的新分支充满了仅 EOL 更改的文件。

我主要使用 SmartGit 或命令行(git v 1.8.3.1)来开发 linux。我已经尝试在我的全局和 repo 配置文件中删除 autocrlf 和 safecrlf 或设置为 false 以防它们混淆。我试过删除我的 .gitattributes 文件,或设置

* binary

完全防止任何转换。

我已经重置了几十次,删除了我的本地仓库并重新克隆。但是我无法摆脱这些修改过的文件

git rm --cached -r .
git reset --hard

下面是我的.git属性

# Auto detect text files and perform LF normalization
* text=auto

# Specify LF file endings for coding files
*.txt text eol=lf
*.c text eol=lf
*.cpp text eol=lf
*.h text eol=lf
*.py text eol=lf
*.kl text eol=lf
*.json text eol=lf

# Specify windows-only CRLF endings
*.bat text eol=crlf
*.vcproj text eol=crlf
*.sln text eol=crlf

# Specify binary files - do not modify these files, dammit!
*.so binary
*.dll binary
*.lib binary
*.pdb binary
*.exp binary
*.exe binary

我的主要问题是一些(不是全部).so 符号链接显示在一个特定分支中被修改 - 寻找所有世界就像它们已经被转换一样。这一直发生在我最新的分支中,但不是更早的分支。在当前的疯狂浪潮中,我的最后一次合并添加了 *.cpp 标签,它迅速将我的一些(不是全部)*.py 文件转换为 windows 行结尾。

有没有人遇到过这种不可靠的情况?此版本的 git 是否支持 .git 属性文件? veracrypt 或 NTFS 分区是否让我感到困惑?

我已经做了一个星期的琐碎任务,根本无法理解 git 是如何决定其 EOL 策略的。

我仍然不知道到底出了什么问题,但我重新创建了回购协议,只要我从不在 windows 中触摸(只读使用)它似乎就可以了。