SourceTree - 配置 git 来比较以前提交的 ANSI 编码文件
SourceTree - configure git to compare previously commited ANSI encoded files
我正在处理一个编码项目并使用 SourceTree 和 git 进行版本控制。我发现在过去的某一时刻,其中一个源代码文件不小心包含了 NUL 字符。保存此文件时,其编码自动从 UTF-8 更改为 ANSI。我当时没有注意到这一点并提交了文件。在注意到错误的文件编码之前,我又做了几次提交。
现在我已将文件编码改回 UTF-8 并再次提交文件。现在我可以看到从这次提交开始的变化。但是,当文件具有 ANSI 编码时,SourceTree 不会向我显示所有先前提交的更改。
我已经寻找解决这个问题的方法并尝试根据 this answer and this answer 更改 .gitattributes 文件,但是,SourceTree 仍然拒绝向我显示更改。
我还发现 git 差异可以根据 this answer 进行更改,但我不确定如何整合该更改以便 SourceTree 可以显示之前的更改。
我的问题:有什么方法可以改变 git 区分文件的方式以支持 ANSI 编码或自动将所有文件转换为 utf-8,以便我可以在 SourceTree 中查看我之前提交的更改又是?
我找到了解决办法!
在存储库 .gitattributes
文件中添加:
ProblemFile.c diff=utf16_diff
ProblemFile.c set diff
在全局 .gitconfig
文件中添加:
[diff "utf16_diff"]
textconv = "iconv -f utf-16 -t utf-8"
现在 SourceTree 可以正确显示所有以前的提交!
我正在处理一个编码项目并使用 SourceTree 和 git 进行版本控制。我发现在过去的某一时刻,其中一个源代码文件不小心包含了 NUL 字符。保存此文件时,其编码自动从 UTF-8 更改为 ANSI。我当时没有注意到这一点并提交了文件。在注意到错误的文件编码之前,我又做了几次提交。
现在我已将文件编码改回 UTF-8 并再次提交文件。现在我可以看到从这次提交开始的变化。但是,当文件具有 ANSI 编码时,SourceTree 不会向我显示所有先前提交的更改。
我已经寻找解决这个问题的方法并尝试根据 this answer and this answer 更改 .gitattributes 文件,但是,SourceTree 仍然拒绝向我显示更改。
我还发现 git 差异可以根据 this answer 进行更改,但我不确定如何整合该更改以便 SourceTree 可以显示之前的更改。
我的问题:有什么方法可以改变 git 区分文件的方式以支持 ANSI 编码或自动将所有文件转换为 utf-8,以便我可以在 SourceTree 中查看我之前提交的更改又是?
我找到了解决办法!
在存储库 .gitattributes
文件中添加:
ProblemFile.c diff=utf16_diff
ProblemFile.c set diff
在全局 .gitconfig
文件中添加:
[diff "utf16_diff"]
textconv = "iconv -f utf-16 -t utf-8"
现在 SourceTree 可以正确显示所有以前的提交!