是什么导致git混乱字符编码?

Sam*_*lle 21 git encoding git-svn character-encoding 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存储库没问题,但现在我要解决以下两个问题:

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

任何人都可以提供一些线索(我对git很新)?

Sam*_*lle 25

现在让我们揭示痛苦的事实(对我的自我感到痛苦,而不是对git用户来说):我确实搞乱了口音,而不是git.

我本可以刚刚删除了一个让错误地认为git可以搞乱口音的问题,但考虑到upvotes的数量,我认为比很多人犯了同样的错误,所以我选择回答我自己的问题确定真相,也许在同一案件中帮助人们:

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

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

+1到"git reflog"

快乐的口音修复; =)