mat*_*pie 12 windows git registry
有没有办法强制Git将.reg文件视为文本?我正在使用Git来跟踪我的Windows注册表调整和Windows .reg用于这些文件.
更新1:我得到它来运行差异(谢谢,安德鲁).但是,现在看起来如下所示.这是编码问题吗?
index 0080fe3..fc51807 100644
--- a/Install On Rebuild/4. Registry Tweaks.reg
+++ b/Install On Rebuild/4. Registry Tweaks.reg
@@ -1,49 +1,48 @@
-<FF><FE>W^@i^@n^@d^@o^@w^@s^@ ^@R^@e^@g^@i^@s^@t^@r^@y^@ ^@E^@d^@i^@t^@o^@r^@
-^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;
-^@^M^@
...
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新2:感谢所有帮助过的人:这就是我最终做的事情:创建.gitattributes包含内容*.reg text diff的文件,然后我将文件转换为UTF-8,因为UTF-16与diffs一样奇怪.我没有使用任何外国字符,所以UTF-8适合我.
And*_*all 10
要告诉git显式区分文件类型,请将以下内容放在.gitattributes存储库根目录中的文件中:
*.reg diff
Run Code Online (Sandbox Code Playgroud)
正如其他人指出的那样,此问题是由编码混淆引起的。您有两个选择:
通过相应地重新保存将文件编码更改为 UTF-8。
创建一个.gitattributes文件,并包含以下内容:
*.reg working-tree-encoding=UTF-16LE-BOM eol=CRLF
默认情况下,从 Windows 注册表编辑器导出的注册表以特定的 UTF-16 编码保存。在底层,Git 仅支持 UTF-8 及其超集,因此当 Git 看到 UTF-16 编码文件时,它会看到许多意外的非字符字节并将其解释为二进制文件。
要求 Git 通过设置属性将文件视为文本*.reg diff不起作用,因为 Git 仍然认为错误的编码。这就是为什么你看到所有这些^@角色。
其他人建议的一种解决方案是将 UTF-16 文件另存为 UTF-8,这完全有效!但它确实有一个很大的缺点:如果您有很多 .reg 文件,或者您想从注册表编辑器重新导出密钥,则每次都必须使用正确的编码重新保存它。
或者,您可以告诉 Git 您计划对属性使用哪种编码working-tree-encoding。指定此选项后,Git 会将文本文件在提交到存储库时将其转换为 UTF-8,然后在签出时将其转换回原始编码。这样,当文件出现在工作目录中时,它始终具有原始编码。如果您熟悉行尾标准化,其行为与此类似。
如果您选择这条路线,则需要注意一些陷阱:
出于这些原因,文档建议仅当文件无法有效地存储为 UTF-8 时才使用此属性,但根据您的使用情况,这些陷阱可能与您无关。最后,在使用此属性时,还必须指定使用哪些行尾字符以避免歧义。这就是通过eol属性完成的。
综上所述,我建议您尝试.gitattributes在存储库的根目录中创建一个文件,并包含以下行:
*.reg working-tree-encoding=UTF-16LE-BOM eol=CRLF
| 归档时间: |
|
| 查看次数: |
12119 次 |
| 最近记录: |