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

sas*_*alm 5 git ucs2 utf-8

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

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

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

use*_*342 5

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

git filter-branch --tree-filter 'recode utf-16..utf-8 file'
Run Code Online (Sandbox Code Playgroud)

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