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