编辑: 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的,但是现在有以下两个问题需要解决:
- 了解带有重音符号的字符发生了什么
- 从 SVN 历史记录中检索我的工作并以适当的方式提交(如果可能,无需手动检查所有带有重音符号的字符)
谁能提供一些线索(我对 git 还是比较陌生)?
最佳答案
现在让我们揭开痛苦的真相(对我的 self 来说是痛苦的,而不是对 git 用户来说是痛苦的):我确实弄乱了口音,而不是 git。
我本可以删除让我们错误地认为 git 会弄乱口音的问题,但考虑到投票的数量,我认为很多人都犯了和我一样的错误,所以我选择回答我自己的问题来确定真相,并可能帮助处于同一情况的人:
- Git 不会触及除换行符以外的字符。
- 我在提交之前打破了口音,但我没有注意到它,因为我没有给予足够的重视。为此,我用 Eclipse 编辑了一些文件。 Eclipse 无法识别编码,重音符号在保存时全部被奇怪的字节序列替换。就这样。
再次感谢 Dmitry Pavlenko为我提供有关如何调查此问题的指示。
+1 到“git reflog”
快乐的口音修复;=)
关于git - 什么会导致 git 混淆字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623498/