【问题标题】:How to make git-show export file as UTF-8如何使 git-show 导出文件为 UTF-8
【发布时间】:2018-09-09 20:56:29
【问题描述】:

我想查看一个旧版本的文件,所以我跑了

git show <commit-sha>:example.less > temp.less

将旧版本导出为temp.less。但是导出的文件最终会使用 UTF-16 编码(甚至认为 example.less 是 UTF-8 编码的)。

我尝试了--encoding=utf-8--encoding=utf8,但都没有成功。此外,如果可能的话,我想在我的 gitconfig 中设置它,而不是每次都输入它。


Windows 10
Git 2.15.0.windows.1

【问题讨论】:

  • “>”提示意味着您在 Windows 上?那么,哪个Windows?哪个混蛋? Windows 有很多不同的 git。对于 Win10,请尝试 chcp 65001。
  • 请注意,Git 本身存储一个原始字节流。您可以随时使用git cat-file -p &lt;blob-hash-ID&gt; 访问原始字节流。然后由您决定使用您喜欢的任何工具对其进行转换。使用 git show 可能会或可能不会通过各种字节流到编码转换器运行 blob,具体取决于您的 Git 版本和其他详细信息。 (根据需要将 Git 版本和操作系统详细信息添加到您的问题中。)
  • @torek 我已经编辑了问题

标签: git character-encoding git-config


【解决方案1】:

首先,请确保使用latest Git for Windows (2.19-rc2),以便从最新的错误修复中受益。

其次,将您的 git 显示重定向到一个文件 (git show... &gt;afile),然后在支持 UTF-8 的编辑器(SublimeText、Notepad++、VSCode...)中查看该文件
这将比阅读它更容易in an UTF16-CMD(意思是Lucida字体+CHCP 65001)。

注意:UTF-8 是 git show --encoding=... 的默认值。

Scott H 添加in the comments

我在 PowerShell 中遇到了同样的问题,但随后在 CMD.exe 提示符下解决了它,即使没有特殊代码页 (chcp) 并且没有指定 --encoding=utf-8

适用于 git cat-file blob HEAD:file &gt; retrievedgit show ...

【讨论】:

  • 我确实尝试过重定向到一个文件 - 问题是由于某种原因该文件以 UTF-16 编码结束。我知道这一点,因为当我尝试在括号中打开文件时,它说它是 UTF-16 并且无法打开它。如果不清楚,我已经编辑了问题
  • @binaryfunt 只是为了测试,你试过stackoverflow.com/a/10765469/6309 吗? (Lucida字体+Chcp 10000chcp 65001),如图superuser.com/a/632800/141
  • @binaryfunt ah: stackoverflow.com/a/34899308/6309 单独做重定向不是一个好的解决方案。在重定向之前至少需要CHCP 65001
  • 试过&gt; chcp 65001 然后 git show 有和没有--encoding=utf-8,但它没有用。仍然得到一个 UTF-16 文件。虽然还没有更新 git
  • @bin 你关注stackoverflow.com/a/34899308/6309了吗?
【解决方案2】:

这似乎是 Windows PowerShell 中的一个问题,只需使用 CMD 终端即可解决。

我使用 git 版本 2.27.0.windows.1 复制了 Windows 10 中的行为。在 PowerShell 中,我不断获取以 UTF-16 编码的文件,甚至尝试更改代码页(使用chcp 65001)或使用--endoding=utf-8 等技巧。

只需切换到 CMD,以下类型的命令就可以工作并生成 UTF-8 格式的文件:

git cat-file blob HEAD:test.txt > retrieved.txt
git show HEAD:test.txt > retrieved.txt

虽然这并不能解决 PowerShell 中的问题,但至少可以将问题范围缩小到 PowerShell。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多