免责声明:我所说的 Git,是指“我”搞砸了。
Earlier, https://stackoverflow.com/questions/17248795/git-thinks-ini-saved-in-unicode-files-are-binary我想了git-gui
向我展示diff
为此它认为是二进制文件。
所以我对我的做了一些改变.\.gitattributes
*.ini text
*.inc text
但这没有用。 https://i.stack.imgur.com/YnmgL.png 然后我做了一些改变 https://stackoverflow.com/questions/4735663/why-does-git-treat-some-cpp-files-as-binary to my .\.git\info\attributes
*.ini text
*.inc text
*.inc crlf diff
*.ini crlf diff
它起作用了。
但现在当我回到以前的提交时,它就搞砸了......
This is how it should look:
并非所有文件中都会发生这种情况。EDIT:它仅发生在包含特殊字符的文件中。
问:这是提交本身的问题还是只是某些设置的问题?
问: 我可以康复吗?
您的 ini 文件以 UTF-16LE 格式保存,Windows 错误地将这种编码描述为“Unicode”。
Git 的默认比较工具不适用于 UTF-16,因为它不是 ASCII 兼容的编码。这就是 git 最初将文件检测为二进制的原因。
LF/CRLF 换行转换将每个 0x0A 字节视为换行,并将其替换为 0x0D-0x0A。但是,在 UTF-16LE 文件中,换行符实际上由 0x0A-0x00 表示,将其替换为 0x0D-0x0A-0x00 意味着您拥有奇数个字节,因此每个两字节代码单元的对齐下一行不同步。因此,所有其他线路都会被破坏。
您的选择是:
恢复属性更改并让 Git 将文件作为二进制处理(失去差异的好处)。
以 ASCII 兼容的编码保存文件。看来您的内容实际上没有任何非 ASCII 字符,所以希望这不是问题?通常您希望将所有文件保存为 UTF-8 - 这是 ASCII 兼容的,但也允许使用所有 Unicode 字符。但这取决于 Rainmeter 是否支持读取这样编码的 INI 文件(可能不支持)。
将 git 配置为使用不同的差异工具 https://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file-as-text,尽管这会让其他人使用你的存储库变得更加复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)