美文网首页
git log,git diff命令在powershell, c

git log,git diff命令在powershell, c

作者: 潘帅次元 | 来源:发表于2018-08-01 22:40 被阅读702次

    问题纠葛

    powershell下,使用git diff, git log 查询到中文提交的代码以及提交记录的时候总能发现乱码问题。
    这对于那些用图形化界面的程序员大大们当然是没有任何问题的。
    虽然本帅也用idea内嵌的git套件,但是git diff, git log 乱码对于本帅来说还是如鲠在喉,芒刺在背,尤其是在使用这两个命令的时候。
    所谓逼死强迫症,趁今天有点闲,遂除掉这道心病。

    现象

    > git diff --cached
    diff --git a/src/main/java/just/fun/heihei.java b/src/main/java/just/fun/heihei.java
    new file mode 100644
    index 0000000..38411be
    --- /dev/null
    +++ b/src/main/java/just/fun/heihei.java
    @@ -0,0 +1,8 @@
    +package just.fun;^M
    +^M
    +public class heihei {^M
    +    public static void main(String[] args) {^M
    +        System.out.println("helloWord");^M
    +        System.out.println("<E4><B8><AD><E5><8D><AB>");^M
    +    }^M
    +}^M
    
    >git log -1
    commit a0b5b19ee7c883780f72ceb4cddc4fd4121f44c2
    Author: shuai.pan <shuai.pan@corp.to8to.com>
    Date:   Mon Jun 25 18:22:24 2018 +0800
    
        <E4><BF><AE><E6><94><B9>idc<E4><B8><9A><E4><B8><BB><E6><96><87><E6><A1><88>
    
    commit ed17bc4511a143c729c1446ca0ef9966ae3ca3ee
    Author: shuai.pan <shuai.pan@corp.to8to.com>
    Date:   Mon Jun 25 17:50:55 2018 +0800
    
        add fxxk pacakge
    

    强迫症患者受不了,于是在网上搜寻良久,大部分解决方案是:

    git config --global color.ui true
    git config --global i18n.commitencoding utf-8
    git config --global i18n.logoutputencoding gbk|utf-8
    

    执行各种命令,就差使用全部进行组合了(排列没必要),但是问题依然存在(心中一个++飞过)。
    再看上述命令,提交的编码是utf-8,日志输出确实gbk,不得法,于是换成如下:
    最终解决在环境变量中配置:LESSCHARSET值为utf-8即可。顺带学习了一波git config相关的命令。

    git config --global i18n.commitencoding utf-8
    git config --global i18n.logoutputencoding utf-8
    
    export LESSCHARSET=utf-8 ## linux bash配置环境变量
    set LESSCHARSET=utf-8 #windows配置环境变量
    
    powershell git diff
    powershell git log
    cmder git log, git diff

    总结

    终于搞定这个问题,治好这强迫症心病,开心得不行。
    耗费时间巨大:但是花费了大概3小时,才解决。加上n久以前的时间,那不少于一天了@_@
    考虑问题不全面:一直都在考虑git上的传输编码问题,就没考虑过bash上输出是否支持utf-8这总格式。毕竟为啥在别的idea上面可以实现中文,而bash不可以?不就是最后这输出的问题么?

    附:
    系统 win 7 专业版 64位
    cmder 版本 Version 1.3.6.678
    

    相关文章

      网友评论

          本文标题:git log,git diff命令在powershell, c

          本文链接:https://www.haomeiwen.com/subject/trldvftx.html