我有一个git存储库,其中有一个UTF-16文件。它偶然只有UTF-16,文件可以用7位ascii编码而不会丢失数据。我想使用类似rereposgeon的东西来将文件转换为UTF-8,这样git diff就可以处理旧版本的文件,而不必求助于git difftool。这可能吗?
为什么不直接将文件转换为UTF-8并提交,例如:
iconv -f UTF-16 -t UTF-8 input-file.txt > input-file.txt.fixed
# Check here that the conversion worked OK
mv -i input-file.txt.fixed input-file.txt
git commit -m 'Convert input-file.txt from UTF-16 to UTF-8' input-file.txt
在澄清注释后更新:
如果您想在HEAD
的历史上每次提交时重写该文件,您可以使用git filter-branch
,如下所示:
git filter-branch --tree-filter
'iconv -f UTF-16 -t UTF-8 input-file.txt > input-file.txt.fixed &&
mv input-file.txt.fixed input-file.txt' HEAD
当然,如果您以这种方式重写历史记录,如果您与任何人共享此存储库,则可能会导致问题。(我还没有测试过这个命令——使用时要小心,可能只是您的存储库的一个新克隆。)