工程师的时光穿梭机 —— git

工程师们整天与各种文件打交道,而且处理的都还是那种“弄错了哪怕一个字符都不行的文件”。

比如,文件弄丢了就很可怕,所以在过去存储不稳定的时代,“备份”一直是工程师们最小心也最头疼的工作内容之一,因为存储不稳定意味着说,有些文件“突然之间就读不出来了”…… 这太可怕了。

更可怕的是另外一种“坏掉的文件” —— 就是那种被自己搞乱了的文件,一会儿改改这里,一会儿改改那里,到最后出了问题之后完全搞不清楚究竟是哪儿出了问题……

经过多年的努力,工程师们终于给自己造出了非常好用的“时空穿梭机” —— git,一种所谓的“版本管理工具”。也就是说,有了这种工具之后,工程师们可以随时穿越到某个时间点上,查看当时的文件状态…… 或者,就像下棋的时候可以“悔棋”一样,把刚刚做出的改动撤销掉…… 等等。

学会了之后呢,git 就显得特别简单 —— 也能深深体会到这东西是生命中不可或缺的工具(其中的工作流及其背后的方法论,甚至可以应用到自己的生活里)。可最初的学习很难,因为

  1. 这几乎是个没有之前类似经验对应的全新知识
  2. 大量的工作对初学者来说实际上没有视觉反馈

所以,在这里,我没准备上来就讲解 git 是什么,它的原理是什么,它的命令都有哪些,使用的时候需要注意什么…… 事实上,这种教程几乎遍地都是 —— 因为它太重要了么,所以网上随便一搜,就有一大堆经典教程(当然,教程那么多,并没有降低初学者的难度)……

以下就是一个实际工作过程,你要做的就是“一步一步跟下来”,做完之后,还要再重复跟很多很多次…… 其中涉及到的 git 命令,就算不理解也没关系,反正要让你的手指头熟悉他们,反复敲 —— 就好像我们小时候抄课文一样(那时候我们也其实常常并不真的理解课文内容)—— 直到我们居然可以做到“死记硬背”为止。

这些操作的目标是把一本免费公开在网上的编程书,Think Python 2ed —— 非常经典的一本书,很多重要的基础概念,可以说它讲的是最好的 —— 把这本书的样式重新组织一下,以便阅读的时候“赏心悦目”;下图左边是它原本的显示样式,右边是重新设计过后的显示样式:

这算是“热身运动”,这个热身运动做完之后,你再去读读网上的那些经典教程,就会发现,嗯,还真的不是很难……

在这个过程中,很多的命令,你完全不知道怎么回事儿 —— 这并不重要,你就照做就好(而且刚刚说过,还要照做很多很多遍)。甚至,在这篇教程里,你要用的编辑器不是之前你费劲熟悉过的 Atom,而是 Sublimetext,这即意味着说,你可能还要事先把玩一下这个新的编辑器。再比如,你可能中间要用到“正则表达式”(事实上,你都不知道那些表达式在哪里),所以,在 Find/Replace 的过程中,也许会因为你并没有按下那个小按钮而得不到正确的结果……

反正是够折腾的,但,大家都是这样折腾过来的,所以,你其实也没什么可烦恼的。

等你把这个教程折腾完了,顺带抽空也仔细读一下 Think Python,用这本书,把一些基础的编程概念谙熟于心:

  • 变量
  • 值(整数、分数、字符串、布林值)
  • 运算符(优先级)
  • 控制流(分支、循环)
  • 数组
  • 函数
  • 保留关键字

这点东西,是所有编程语言的核心,是你未来可以很快地学会任何一门编程语言的基础。


具体的实操过程我放在 github 上了:

https://github.com/xiaolai/git-basics-tutorial

你反复折腾若干遍之后,可以直接读这个教程了:

Pro Git book, by Scott Chacon and Ben Straub

试试看罢。