Git使用-系统差异

2024/05/20 | 字数1382 | 阅读3分钟


Git最开始是为Linux内核开发准备的,用来维护内核代码,后来用的人越来越多,就支持了更多的操作系统,例如Windows系统和MacOS。Mac系统和Linux在使用上其实差异不大,今天我们重点看Windows上和Linux上的差异,这里列出三点:

字符编码&字符集

字符编码是给计算机上的字符映射的规则,例如使用多少个字节,每个字符对应的二进制值是什么。字符集就是在给定的字符编码的基础上可以表示的字符的集合。20世纪60年代美国制定的最早的ASCII编码以及ASCII字符集,后来为了支持欧洲常用字符,又有了ISO-8559-1/2/3。这些字符集以及字符编码只需要1个字节就够了,不需要更多。但是到了亚洲国家的文字(中日韩),1个字节就不够用了,因此就有了Unicode字符集以及UTF编码,这里面用的最多的就是UTF-8编码,一种变长编码格式,对于数据存储和网络传输效率非常高。

中文版的Windows默认使用的GB2312,这是第一个汉字编码国家标准,而Linux和Mac系统默认都是采用UTF-8编码,如果项目成员使用不同系统开发,建议使用统一采用UTF-8编码格式,这样有利于各平台统一显示。关于采用何种字符集以及字符编码,主要取决于使用的编辑器:

至于其它的编辑器,各位可以根据需要自行设置;

在Linux/Mac系统上,可以使用iconv命令行软件进行各个字符编码的转换:

bash
1
2
3
4
5
## from GB2312 to UTF8
iconv -f GB2312 -t UTF-8 <file>

## from UTF8 to GB2312
iconv -f UTF-8 -t GB2312 <file>

行结束符

Windows系统上默认使用回车+换行(CR+LF = 0x0D0A)作为一行的结束符,Unix或者Linux系统默认使用换行(LF=0x0A)作为一行的结束符,Mac OS X之前的系统默认使用回车(CR = 0x0D)作为一行的结束符,现在的Mac系统统一采用和标准Unix一样的LF作为一行的结束符。如果项目组成员使用了三种不同的系统作为开发环境,就会出现差异。Git中已经考虑了这个问题,提供了一个配置项作为这三种平台的转换:

bash
1
2
3
git config --global core.autocrlf  true  ## 使用windows风格的行结束符CR+LF
git config --global core.autocrlf  input ## 使用unix或Linux风格的行结束符LF
git config --global core.autocrlf  false ## 使用源文件中的内容

如果你在Windows系统上开发软件,使用第一条命令配置git。其它系统(Mac或者Linux)不用单独配置,默认为false。

CR(回车): Carriage Return; LF(换行): Line Feed

文件权限

如果项目代码中有shell脚本或者其他需要执行的文件,这些文件需要有执行权限才能保证可以执行,但Windows系统上的权限管理机制和Linux/Mac不同,如果项目组成员在Windows系统上编写脚本代码,如何给脚本增加权限?可以通过这条命令:

bash
1
2
3
git add <file>
git update-index --chmod=+x <file>
git commit -m "add executable permission to <file>"
bash
1
2
3
git add <file>
git update-index --chmod=-x <file>
git commit -m "remove executable permission to <file>"
上一篇:Git建议-代码库里放什么 下一篇:Git使用-忽略那些无关文件

【文章不错,鼓励一下】