是否有可能使用rereposgeon之类的东西将所有提交的UTF-16文件转换为git repo中的UTF-8文件?



我有一个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

当然,如果您以这种方式重写历史记录,如果您与任何人共享此存储库,则可能会导致问题。(我还没有测试过这个命令——使用时要小心,可能只是您的存储库的一个新克隆。)

最新更新