SourceTree - 配置git以比较以前提交的ANSI编码文件

时间:2017-08-23 08:12:37

标签: git encoding character-encoding atlassian-sourcetree

我正在编写一个编码项目,并使用SourceTree和git进行版本控制。我发现在过去的某个时刻,其中一个源代码文件意外地包含了NUL字符。保存此文件后,其编码自动从UTF-8更改为ANSI。我当时没有注意到这一点并提交了文件。在注意到错误的文件编码之前,我做了几次提交。

现在我已将文件编码更改回UTF-8并再次提交文件。现在我可以从这个提交开始看到变化。但是,当文件具有ANSI编码时,SourceTree不会向我显示所有先前提交中的更改。

我已经搜索了解决此问题的方法,并尝试根据this answerthis answer更改.gitattributes文件,但是,SourceTree仍拒绝向我显示更改。

我还发现可以根据this answer更改git的不同,但我不确定如何整合该更改,以便SourceTree可以向我显示以前的更改。

我的问题:有没有办法改变git差异文件以支持ANSI编码或自动将所有文件转换为utf-8的方式,这样我可以再次查看SourceTree中我之前提交的更改?

1 个答案:

答案 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正确显示所有以前的提交!