我有一个文件在 Git 存储库中有多个提交,编码为 16 位 Unicode(UCS-2),用于 Windows。因此,Git 将其视为二进制文件而不是文本文件,我无法查看不同提交所做的更改。是否有一种方法可以将该文件追溯地转换为 UTF-8,即重建历史记录,就像该文件始终是 UTF-8 文件,并且我始终将其作为 UTF-8 文件提交,而不是 16 位 Unicode 文件?
要对文件进行追溯编码,请使用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,以便重新编码命令不会失败,并可选择禁止错误输出。
git filter-branch --tree-filter 'recode utf-16..utf-8 relative/path/to/file'
。这最初让我感到困惑。 - sashoalmiconv
命令,你需要使用UCS-16LE
而不是utf-16。 - Ryan Pavlikiconv
中指定UTF-16实际上不起作用吗? - user4815162342