编辑:git不会干扰字符编码。这里仍保留原文以分享知识和避免他人犯同样的错误。
背景:我的企业使用svn仓库,我使用git-svn作为客户端与该仓库交互。项目中的所有文本文件都(必须)使用Windows默认编码(cp-...)进行编码。我使用git-extensions和命令行来控制git。
我的操作:在过去的3天里,我一直在开发一个新功能,并进行了多次本地提交。最后,我使用交互式变基将所有这些提交压缩成一个提交,然后使用git svn dcommit命令将所有内容推送到svn仓库中。
问题产生:一个同事告诉我,我修改的文件以及我提交后的新文件中的所有重音符号都被弄乱了。我之前已经使用安装的git + svn提交包含重音符号的文本文件到相同的仓库中,并且这是我第一次遇到这个问题。
我的调查:我尝试了以下方法进行调查:使用notepad++打开文件,并尝试使用最常见的编码格式(包括Windows默认编码和UTF-8)查看它们:没有一种编码可以正确地显示重音符号,并且不同的重音符号总是用相同的奇怪字符序列呈现。
临时解决方法:我快速使用git extension创建了一个撤销提交,并将其“dcommited”了。
问题:我的企业svn仓库正常,但现在我需要解决以下两个问题:
- 理解发生了什么,导致有重音符号的字符被破坏了
- 从SVN历史记录中检索我的工作,并以正确的方式提交它(如果可能,而无需手动审查所有带重音符号的字符)
是否有人可以提供一些线索(我对git还比较新)?