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 的两个工具:iconv
、file
.
这很好用,我们已经将它与 msysgit 1.9.5 预览一起使用了很长时间。但是,此版本已被弃用,较新的 Git 具有我们作为一个团队需要的越来越多的功能。问题在于此解决方法依赖于更新两个文件:Git\etc\gitattributes
和 Git\etc\gitconfig
。 Windows 2.x
Git 中不存在这两个文件
如何为 Git 2.x 添加 UTF-16 支持?通过调整为 Git 1.x 描述的解决方法或通过任何其他方式。
创建全局 gitattributes
和 gitconfig
可能是最好的方法。
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?
我在一个开发项目的团队中工作,该项目包括在 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 的两个工具:iconv
、file
.
这很好用,我们已经将它与 msysgit 1.9.5 预览一起使用了很长时间。但是,此版本已被弃用,较新的 Git 具有我们作为一个团队需要的越来越多的功能。问题在于此解决方法依赖于更新两个文件:Git\etc\gitattributes
和 Git\etc\gitconfig
。 Windows 2.x
如何为 Git 2.x 添加 UTF-16 支持?通过调整为 Git 1.x 描述的解决方法或通过任何其他方式。
创建全局 gitattributes
和 gitconfig
可能是最好的方法。
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?