2019独角兽企业重金招聘Python工程师标准>>>

:因从 Git V1.7.10 开始引入了 Unicode 支持,所以在此版本之前会出现的乱码问题可能在之后的版本则不需要设置,但仍存在一些乱码问题,因此我仍然强烈推荐与 mintty 配合使用。

Git 是一个非常不错的分布式版本控制系统,虽然它最初设计在 Linux 平台下,但现在已经被很好的移植到其它平台。Windows 平台下对应的 Git 工具为 msysGit,在涉及到跨语言开发时我们需要做一些配置来规避部分问题。但有些问题因为平台差异并不能够很好的解决,但只要在使用时留心这些差异,我们仍然可以让 msysGit 几乎完美的工作。

Git Bash 中不能输入中文

[解决方法] 在 "/etc/inputrc" 中添加或修改以下配置:

set output-meta on set convert-meta off 

中文 log 乱码

[解决方法] 在 "/etc/gitconfig" 中添加或修改以下配置:

[gui] encoding = utf-8 [i18n] commitEncoding = gbklogOutputEncoding = gbk 

或在 Git Bash 中运行下列代码:

git config --system gui.encoding utf-8 git config --system i18n.commitEncoding gbk
git config --system i18n.logOutputEncoding gbk 

并在 /etc/profile 中添加:

export LESSCHARSET=utf-8 

说明:

  1. gui.encoding = utf-8 解决 Git GUI 和 GITK 里中文乱码;
  2. i18n.commitEncoding = gbk 提交 log 使用的编码;
  3. i18n.logOutputEncoding = gbk 使在运行 git log 时将 utf-8 编码转换成 gbk 编码;
  4. export LESSCHARSET=utf-8 设置 less 分页器的编码,使 git log 在使用分页时正常显示中文(默认分页)。

Git Bash 中 ls 命令查看中文文件名或目录乱码

[解决方法] 在 "/etc/git-completion.bash" 添加:

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

如果你想 ls 也像其它环境下一样自动着色,也可以用下面替代:

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

注意: 这样虽然能解决中文文件名或目录的问题,但是在跨平台开发时,不应使用中文文件名和目录。

使用 mintty

通过上面的设置我们便可以顺利地进行跨语言及跨平台的开发了,但我觉得仍有必要给大家介绍 mintty,有了它,所有的跨语言问题都可以通过配置得到完美的解决。mintty 的部署十分简单,我们只需要下载 mintty 对应的 MSYS 版本,并保存在 Git 安装目录下的 bin 目录下,然后通过 Git Bash 运行下列代码便可以在 mintty 执行相应的命令:

#!/bin/sh mintty sh -l 

需要注意的是,如果你 mintty 设置为 Linux 环境开发,即 "~/.minttyrc" 对应的设置如下:

Locale=zh_CN Charset=UTF-8 

你需要将 "/etc/gitconfig" 中的 i18n 设置节点全部设置为 utf-8,以及 core.quotepath 设置为 false,即:

[core] quotepath = false [i18n] commitEncoding = utf-8 logOutputEncoding = utf-8 

虽然此时关于 LESSCHARSET 的设置可有可无,但为了更好地交替使用 Git Bash 和 mintty,我所做的方法是保留此设置,并准备两个版本的 gitconfig 分别对应 gitconfig.msysgit 和 gitconfig.mintty,并在 "/etc/bin" 目录下新建 usemsysgit 和 usemintty 文件如下:

#!/bin/sh # usemsysgit cp /etc/gitconfig.msysgit /etc/gitconfig
printf 'msysGit is ready.' 
#!/bin/sh # usemintty cp /etc/gitconfig.mintty /etc/gitconfig
mintty /bin/bash -l 

以后你需要在使用前执行相应版本的命令,如果你有更好的方法,不妨同大家一起分享 :)

换行问题

之所以把换行问题放在最后,是因为不能用固定的换行配置去适应多种不同的环境,只有何种配置更适合当前环境。Git 通过设定 core.eol,core.safecrlf, core.autocrlf 的值相应地处理换行问题,具体如下:

core.eol -lf # 使用 LF 为行结束类型。 -crlf # 使用 CRLF 为行结束类型。 -native # 默认,使用本地(当前操作系统)的行结束类型。 #   Windows 使用 CRLF,Linux 和 MacOS 使用 LF(MacOS 9 前使用 CR)。 core.safecrlf -true # 保证换行类型转换为可逆转换(如同时包含 CRLF 和 LF 换行符时便不是可逆转换)。 -false # 不检查换行类型转换。 -warn # 当换行类型转换不可逆时显示警告信息,但不影响操作执行。 core.autocrlf -true # 提交时自动将 CRLF 转换为 LF,获取自动将 LF 转换为 CRLF。 -false # 不转换换行类型(本地和源的代码完全一致)。 -input # 提交时转换将 CRLF 转换为 LF,获取时不转换。 

不同的人对于换行的配置有不同的理解,你可以选择自己认为满意的方式,比如我比较推荐的方案如下:

# 换行类型为 LF 的环境中配置。 core.autocrlf = input # 换行类型为 CRLF 的环境中配置。 core.autocrlf = true 

上面这种配置方式也是比较主流的配置方式,但当你跨平台拷贝移动源仓库时请记得先转换换行类型(可通过修改配置后再获取的方式)。还有一个问题就是如果二进制文件如果在传输中转换结束类型时往往会使文件不能正常使用,因此需通过设置 gitattributes 将这些文件排出,例如当前项目中包含 HelloWorld.exe 的二进制文件,则在同级或上级目录的 .gitattributes 文件中做如下设置(一般为项目根目录):。

*.exe binary 

参考资料: git-config(1) Manual Page gitattributes(5) Manual Page Pro Git - Pro Git 7.0 自定义 Git

转载于:https://my.oschina.net/u/1183146/blog/158859

msysGit 中文环境配置及跨平台开发注意事项相关推荐

  1. linux下latex中文字体,Ubuntu下LaTex中文环境配置

    http://www.cnblogs.com/lienhua34/p/3675027.html --------------------------------------- [转] http://h ...

  2. Debian中文环境配置及几种中文编码的探究

    Debian中文环境配置及几种中文编码的探究 国际化(Internationalization,简写为I18N)是指软件能用于多国语言环境的能力,它在系统的低层函数库中提供一组标准的函数接口,能根据本 ...

  3. Debian中文环境配置及几种中文编码的探究(From: 天马行空)

    Debian中文环境配置及几种中文编码的探究 国际化(Internationalization,简写为I18N)是指软件能用于多国语言环境的能力,它在系统的低层函数库中提供一组标准的函数接口,能根据本 ...

  4. nginx nodejs环境配置_Linux基本开发环境配置git,c++,nodejs,nginx

    Linux基本开发环境配置 前一篇文章配置了基本的SSH,本文来讲讲关于基本的开发环境的配置,包括git,c,c++,nodejs,nginx. 安装git和配置无密码登录github yum ins ...

  5. hololens入门环境配置及加速开发

    微软混合显示官方教程 : MR Basic 101: https://docs.microsoft.com/zh-cn/windows/mixed-reality/holograms-101 环境配置 ...

  6. 51单片机开发环境配置(使用VScode开发)

    前言 工欲善其事,必先利其器,作为一个个单片机爱好者,相信大家入门的时候都是用的keil来开发,这个当然也可以,但是用的时间长了就发现这个开发效率真是慢呀.于是我就想能不能在vscode上开发单片机, ...

  7. latex中文环境配置(针对北大模板,开题报告+中期答辩+毕业论文)

    最近自己在忙着开题,中文环境真的是emm 以下只针对北大的毕业论文模板,至于其他的中文环境没有尝试 主要是用不同的latex编辑器会报不同的错误,当然我最后还是统一成了pdflatex,经过无数次尝试 ...

  8. pycharm windows 服务器_环境配置 | Pycharm远程开发的环境配置

    目的:同局域网中的两台电脑,Mac上看视频学习编程 + 当服务器跑代码:Windows上使用Pycharm写代码.学习远程开发 (当前底子有限,很多操作可能存在理解偏差) Mac上代码存放路径:~/O ...

  9. java web环境配置_JAVA Web开发环境配置

    假设JDK安装到C:\JDK6, TOMCAT安装到c:\Tomcat6 配置JAVA 1.系统变量PATH变量后添加C:\JDK6\bin 2.系统环境变量添加 JAVA_HOME: c:\JDK6 ...

最新文章

  1. Docker桌面不再对企业用户免费,每月订阅费最高21美元,用户直接炸锅了
  2. 漫谈词向量之基于Softmax与Sampling的方法
  3. 越秀人民币夹层二期完成首轮关账 首期募集近10亿元...
  4. word List 50
  5. 信息学奥赛一本通(1063:最大跨度值)
  6. Nssm Edit XXX
  7. jsp和html的作用域,JSP(二):JSP九大内置对象、四个作用域对象
  8. 已知任意三点坐标求圆心
  9. 体验SubSonic
  10. 液晶屏接口定义_简介TFT-LCD液晶屏接口类型之LVDS接口
  11. SpringBoot/SpringMVC整合Shiro:实现登录与注册(MD5加盐加密)
  12. 《三体》与《西部世界》
  13. 红孩儿编辑器的模块设计6
  14. 机械设备租赁平台如何快速进行商户号分账?
  15. Testin融资后首个举措:推出O2O一站式测试服务
  16. Elasticsearch启动报错:warning: ignoring JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191; using bundled JDK
  17. JAVA方法3-方法的重载
  18. 计算机网络复习04——网络层
  19. 【总结】北大2018冬令营题目总结
  20. Mysql安装教程,最简单的配置

热门文章

  1. matplotlib绘制平滑的曲线
  2. Pytorch的优化器推荐
  3. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载
  4. java 班级号_Java 学校班级回忆录网站管理系统
  5. maven打包导入本地jar包
  6. C++——包装器std::function与绑定器std::bind
  7. oracle 10g sqlplus登录显示问号,oracle sqlplus 连接时,connection to 显示的是问号
  8. 8.Spring Security 权限控制
  9. python编写测试工具-python 写一个性能测试工具(一)
  10. 40 个 SpringBoot 常用的注解,你知道几个?