【问题标题】:Git, repair file names and paths, encodingGit,修复文件名和路径,编码
【发布时间】:2018-09-03 10:09:54
【问题描述】:

我将 hg-repository 迁移到 git-repository。 我有问题。你能帮帮我吗?

git 存储库(在 git 扩展中)中的文件名(和路径)问题。 名称是西里尔字母(win 1251)。 您能否建议,我该如何修复 git-repository?

下一张截图:

【问题讨论】:

  • 以前不是这样编码的吗?
  • 在 hg-repository 中,它们是正确的,采用西里尔文格式。

标签: git


【解决方案1】:

Git 本身很大程度上与1 编码无关。但是,如果您坚持使用 UTF-8 编码,Git 会很多 有用,因为如果您没有另外指定,这是假定的默认值,而 UTF-8 编码避免了数字陷阱(尽管不是全部)。与 Git 生态系统一起工作的大多数环境(工具集等)都更喜欢 UTF-8 编码。

如果您确实指定了编码(通过将 LANG 设置为,例如,ru_RU.CP1251),一些工具会理解数据是在 CP1251 中编码的,但它们也会认为您的终端 正在使用 CP1251,可能并非如此。要解决此问题,您可以使用luit,如How do I view cp1251 text file in UTF-8 console? 的回答中所述。

Mercurial 处理文件名编码的方法是described in the Mercurial Wiki。在快速导出/快速导入转换期间转换为 UTF-8 是可能的,但有点棘手。是否要转换文件内容也取决于您自己(导出/导入交换是执行此操作的理想时间,但显然这需要仔细检测实际内容编码)。

(您也可以使用git filter-branch 重新编码所有文件名,同时重建整个转换后的存储库,但如果您还没有走多远,最好重做从 Hg 到 Git 的转换。 )


1也就是说,Git 尝试不通过简单地存储快照来解释文件名或文件内容本身。但这在很多极端情况下都会失效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    相关资源
    最近更新 更多