如何确定文件编码?

时间:2014-09-06 12:20:30

标签: git encoding

是否有git命令在Linux中返回文件编码,如file? 这完全描述了我的问题。我试着搜索谷歌,但一无所获。

2 个答案:

答案 0 :(得分:5)

Git本身不知道文件的编码(存储为blob,意思是任意二进制数据)。
请参阅“What is the format of a git “blob”?”。

git checkout后仍可使用命令文件 或者在git show之后通过管道传输来阅读特定文件的内容。

答案 1 :(得分:0)

如果您只是尝试将行结尾(CRLF(Windows)转换为Linux标准或其他),您可以尝试这样的事情,由@VonC here回答。

或者如果你想将文件中的编码转换(即:ISO-8859-1到UTF-8)并且你是linux用户,你可以尝试this,由@Celada回答

您可以使用
git filter-branch
执行此操作。您的想法是您必须在每次提交时更改文件的编码,然后重写每个提交。 首先,编写一个脚本来更改存储库中每个文件的编码。它可能看起来像这样:

    #!/bin/sh
    find . -type f -print | while read f; do
        mv -i "$f" "$f.recode.$$"
        iconv -f iso-8859-1 -t utf-8  "$f"
        rm -f "$f.recode.$$"
    done
然后使用
git filter-branch
一次又一次地运行此脚本,每次提交一次:
git filter-branch --tree-filter /tmp/recode-all-files HEAD
其中/ tmp / recode-all-files是上面的脚本。 在从CVS新升级存储库之后,您可能在git中只有一个分支,其线性历史记录回到开头。如果你有几个分支,你可能需要增强git filter-branch命令来编辑所有的提交。"