使用git一段时间了,还是会遇到一些问题,这里作一总结,后续有新问题了补充。
在提交信息中输入中文后出错
现象
add后commit,在vim中输入了中文提交信息,保存退出时出错,提示如下:
网上查了一些方法,不好用。于是自己琢磨了一下,测试好用。
分析
.git/COMMIT_EDITMSG
是一个文件,每次提交时会自动生成。错误信息大意是转换失败,大概也就是中文转换时失败了。
使用file
查看了.git/COMMIT_EDITMSG
的文件类型,发现为非utf-8类型。对比了其他项目中能正常提交时的该文件类型,为utf-8。
于是,我怀疑是本地提交的文件类型有问题,检查了提交的所有文件的类型:
发现在一个子目录里有非utf-8格式的文件,其他文件都为utf-8。因为这几个文件是从Windows上拷贝过来的,忘记修改编码了。
于是把它们都修改为utf-8格式,再次提交就ok了。中文信息也能正常显示。
解决步骤
问题解决了,也就简单了。
- 所有待提交文件的类型统一修改为utf-8(可借助编辑器,正常打开后,显示的编码为GB2312,另存为选择utf-8即可)
- add后再次提交,输入中文信息,ok
此时查看 .git/COMMIT_EDITMSG
的文件类型,也为utf-8了。
从Windows拷贝文件到linux后,经常会出现编码不一致的情况。此时,要先修改编码,另存后再修改文件内容,否则可能导致之前的中文内容全部乱码,再恢复就麻烦了。