Skip to content

[blog]记录 - git提交又乱码了…… #23

Description

@xovel

好尴尬,刚才去新建的moonlight项目下面提交代码,提交说明里面填了一些中文,结果push上去之后拉出来的提交说明变成了乱码,然后又在本博客的源码分支上提交了一次,添加了新写的三篇文章,也是用的中文,结果也是乱码

以前不是解决好了这个问题了么?如今怎么出现了?

之前的文档有误,现在也不深究了,解决问题吧:

关于git中文乱码,通常有三个场景:

  1. git bash控制台里面的命令乱码,如ls,git log等
  2. git GUI乱码
  3. git GUI提交到远程仓库后,远程仓库显示的是乱码

第一个,ls命令,显示中文文件夹或文件时乱码,解决方案:找到git安装目录下的etc\git-completion.bash文件,在最末位加上这一句即可:

alias ls='ls --show-control-chars --color=auto'

当然,还有全局设置的方式,但这里并不推荐,所以机不做介绍了。

针对git log命令,对git记录说明中的中文显示为方块乱码的解决方案:在用户目录下找到git的配置文件.gitconfig,在[i18n]项目(如果没有可自行新建)下,设定一个属性:logoutputencoding = utf-8

建议通过命令行的方式进行设置:

git config --global i18n.logoutputencoding utf-8

至于GUI的乱码问题,可以直接在GUI的界面上右键,在弹出的菜单中选择编码方式,指定为utf-8即可。也可以通过命令行进行设置:

git config --global gui.encoding utf-8

对于git提交说明乱码,将提交的文本编码方式指定为utf-8即可。

git config --global i18n.commit.encoding utf-8

之前不知道哪一份文档,说要显示git log的提交说明为中文,将i18n.logoutputencoding设置为gbk即可。这是一个误导!

总结

在用户根目录下的.gitconfig文件中,确保以下设置存在:

[gui]
	encoding = utf-8
[i18n]
	commitencoding = utf-8
	logoutputencoding = utf-8

上面的三个设置项对应的git命令行语句为:

git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8

要想让ls命令支持显示中文,对ls命令做一个别名,将其重定向为ls --show-control-chars --color=auto即可让ls命令显示含中文名的文件夹或文件了。


不要再问为什么要改成utf-8格式了,谁让Linux的默认编码就是utf-8呢?更何况windows系统下的默认文本编码并非utf-8,有许许多多的转码问题,所以,直接指定一种编码,更方便多操作系统的兼容性。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions