git - 什么会导致 git 混淆字符编码?

标签 git encoding character-encoding git-svn git-extensions

编辑: git 不会混淆字符编码。这仍然是为了分享知识并避免其他人犯同样的错误。


上下文:我的企业使用 svn 存储库。我使用 git-svn 作为客户端来与这个存储库交互。项目中的所有文本文件都(并且必须)使用 Windows 默认编码 (cp-....) 进行编码。我使用 git-extensions,有时使用命令行来引导 git。

我做了什么:在过去的 3 天里,我正在开发一项新功能,并且做了一些本地提交。最后,我使用交互式 rebase 将所有这些提交压缩为一个提交,然后我使用 git svn dcommit 在一次提交中将所有内容推送到 svn 存储库中。

然后发生了什么:一位同事告诉我,在我修改的文件中以及在我提交后的新文件中,所有重音都乱七八糟。我之前已经在安装 git + svn 的同一个存储库中提交了带有重音符号的文本文件,这是我第一次遇到这个问题。

我的调查:我做了以下事情来调查:用 Notepad++ 打开文件,并尝试最新的编码(包括windows默认和UTF-8)来查看它们:没有一个可以正确显示重音,并且不同的重音总是由相同的奇怪字形序列呈现。

临时解决方法:我快速创建了一个带有 git 扩展的还原提交并“dcommited”它。

问题:我的企业svn仓库是OK的,但是现在有以下两个问题需要解决:

  1. 了解带有重音符号的字符发生了什么
  2. 从 SVN 历史记录中检索我的工作并以适当的方式提交(如果可能,无需手动检查所有带有重音符号的字符)

谁能提供一些线索(我对 git 还是比较陌生)?

最佳答案

现在让我们揭开痛苦的真相(对我的 self 来说是痛苦的,而不是对 git 用户来说是痛苦的):我确实弄乱了口音,而不是 git。

我本可以删除让我们错误地认为 git 会弄乱口音的问题,但考虑到投票的数量,我认为很多人都犯了和我一样的错误,所以我选择回答我自己的问题来确定真相,并可能帮助处于同一情况的人:

  1. Git 不会触及除换行符以外的字符。
  2. 我在提交之前打破了口音,但我没有注意到它,因为我没有给予足够的重视。为此,我用 Eclipse 编辑了一些文件。 Eclipse 无法识别编码,重音符号在保存时全部被奇怪的字节序列替换。就这样。

再次感谢 Dmitry Pavlenko为我提供有关如何调查此问题的指示。

+1 到“git reflog”

快乐的口音修复;=)

关于git - 什么会导致 git 混淆字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623498/

相关文章:

git - 如何解决 Git : "Updates were rejected because a pushed branch tip is behind its remote counterpart" 中的问题

javascript - 在 Node.js 中将文件转换为 UTF-8 文件

node.js - 使用请求的nodejs编码

java - Linux系统中德语字符编码使用java

c# - 将特殊字符转换为普通字符

java - 从字符集创建新字符串会抛出 NoSuchMethodError (Android)

eclipse - Git 错误 : Malformed input or input contains unmappable chacraters

git 致命 : error in object: unshallow <SHA-1>

git - Jenkins "git command not found"

windows - git log --grep 在 Windows 中不起作用