Git 对 Windows 2.x 的 UTF-16 支持

UTF-16 support in Git for Windows 2.x

我在一个开发项目的团队中工作,该项目包括在 SQL Server Management Studio (SSMS) 中创建的文件。 SSMS 的默认文件编码是:Codepage 1200 (Little-endian UTF-16).

Git for Windows 将这些文件识别为二进制文件。它无法显示文件的差异视图,也无法合并文件(远程合并 覆盖 本地版本)。

我们可以轻松更改 SSMS 中的默认编码。但是,我们不希望有任何 UTF-16 文件被提交的风险 - 因为它们会对我们的源代码控制和发布管理流程造成严重破坏。

This stack overflow post 描述了如何使用 Clean/Smudge 过滤器在提交时将 UTF-16 文件即时转换为 UTF-8,使用 GnuWin32 的两个工具:iconvfile.

这很好用,我们已经将它与 msysgit 1.9.5 预览一起使用了很长时间。但是,此版本已被弃用,较新的 Git 具有我们作为一个团队需要的越来越多的功能。问题在于此解决方法依赖于更新两个文件:Git\etc\gitattributesGit\etc\gitconfig。 Windows 2.x

Git 中不存在这两个文件

如何为 Git 2.x 添加 UTF-16 支持?通过调整为 Git 1.x 描述的解决方法或通过任何其他方式。

创建全局 gitattributesgitconfig 可能是最好的方法。

Git for windows 2 基于 MSYS2。这在某处有一个 \etc 目录。访问它的最佳方法可能是打开 MSYS2 shell.

按如下方式配置系统范围内的 2 个文件(即所有用户和所有存储库):

git配置

在你的 git 中 windows shell:

git config --system --edit

git属性

git config --system core.attributesfile <path>
并使用您希望的任何路径

当然,如果您希望将范围缩小到全局(即仅针对特定用户的所有回购),请将 --system 替换为 --global

相关问题:

Where do the settings in my Git configuration come from?
What is $(prefix) on $(prefix)/etc/gitconfig?