在Git中将UCS-2文件追溯转换为UTF-8

时间:2013-09-19 12:52:56

标签: git utf-8 ucs2

我的文件在我的Git存储库中有多个提交,它是以16位Unicode(UCS-2)编码,由Windows使用。

因此,Git认为它是一个二进制文件,而不是文本文件,我看不到不同提交所做的更改。

有没有办法将该文件追溯转换为UTF-8,即重建历史记录,就像文件一直是UTF-8一样,我一直把它作为UTF-8文件提交,而不是16 -bit Unicode文件?

1 个答案:

答案 0 :(得分:5)

要追溯重新编码文件,请使用git filter-branch

git filter-branch --tree-filter 'recode utf-16..utf-8 file'

如果您没有recode,请改用较长的iconv -f utf-16 -t utf-8 file -o file。如果该文件在早期版本的树中不存在,则可能需要附加|| true以使重新编码命令不会失败,并可选择抑制错误输出。