1. 前言

在上一章的Github起手式中,我们简要的介绍了一下什么是Github,以及如何注册账号与配置Github,现在我们将进一步介绍Github。

2. github简介

github已经是一个非常流行的程序仓储和版本控制解决方案了,唯一不足的就是如果是私有云存储的话,还是需要付费使用,不过这也是在情理之中,毕竟中国的网盘全部都挂了(VS天天推销它的免费云存储,有兴趣的可以去那看看)。

github的执行方式有命令行的形式,最近也出了一个图形化界面,当然不是自带的那个简陋的GUI,而是一个真正的for windows,具体界面如下图所示:

repo manifesto github 三个项目demo recbole github_github

因此这样就非常方便我们对于仓库的管理了,至少可以减少很多命令行。但是如果真的要了解github的话,还是建议从命令行开始学起。

3. 命令行的颜色和行尾

这是两个非常重要的部分(至少人家是这样讲的)。

3.1 行尾自动转换

众所周知,window,Linux和Mac使用的行尾是不同的,也就是换行符不同。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。

那么github为我们提供了一个换行符自动转换功能,虽然github推荐只将 UNIX 风格的换行符保存入库,但它也考虑到跨平台协作的场景,并且提供了一个“换行符自动转换”功能。

这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。

命令行的设置如下:

git config --global core.autocrlf true

这样就把自动转换功能开启了。但这对于中文来讲是有bug的,因为如果你手头的这个文件是一个包含中文字符的 UTF-8 文件,那么这个“换行符自动转换”功能 在提交时是不工作的(但签出时的转换处理没有问题)。

因为你提交到仓库的文件已经完全变成了 Windows 风格(签出时把 UNIX 风格转成了 Windows 风格但提交时并没有转换),每一行都有修改(参见本文开头的示意图),而这个修改又不可见(大多数 diff 工具很难清楚地显示出换行符),这最终导致谁也看不出你这次提交到底修改了什么。

这还没完。如果其他小伙伴发现了这个问题、又好心地把换行符改了回来,然后你又再次重演上面的悲剧,那么这个文件的编辑历史基本上就成为一个谜团了

这样看来我们还是把这个功能关闭吧,改成更保守的形式吧:

$ git config --global core.autocrlf false
$ git config --global core.safecrlf true

这样,第二步的作用是换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:

false – 不做任何检查

warn – 在提交时检查并警告

true – 在提交时检查,如果发现混用则拒绝提交

这样就能保证万无一失了。

3.2 命令行的颜色

这里的内容不是太重要,基本上就是以下几种:

  1. 如果命令行是红色,表示仍在处理
  2. 如果命令行是绿色,表示运行正常
  3. 如果是橘黄色,则表示这是分支
  4. 如果是黄色,则表示是历史纪录

另外,在设置的级别中,也分为3级,分别是本地级,全局级和系统级。其优先级恰恰相反,本地级最高,全局级次之,系统级最低。也就是说,本地级的命令可以覆盖全局级的命令,全局级的命令可以覆盖系统级的。那这个在哪体现呢?看一下这个代码:

$ git config --global color.ui auto

可以清楚的看到--global的踪迹。

4. 小结

好了我们今天就讲到这里,下期我们讲开始讲解创建一个仓库等内容。