在周星驰主演的电影《大话西游》中,至尊宝用月光宝盒便可穿越时空,回到过去救他的娘子。Git工具虽然无法真的让我们穿越时空(如果有请一定要让我知道,我要回到过去买大乐透),但对计算机工作者来说,它就像时光机一样神奇,可以让你回到指定的时间点去救回不小心被删除的文件。
Git看起来很容易学,但这只是表象,实际上Git是一款很容易上手,但却很难精通的工具。市面上的参考书籍或网络教程大多只会教大家从终端机指令来学习Git,这让不少想学习Git的新手打了退堂鼓。
我也认同Git指令很重要,因为那是整个Git的基础,所以学习在终端机窗口敲打、输入Git指令是必经过程。但是如果可以搭配图形接口工具,就可以让这个学习曲线稍微缓和一些。所以本书除了Git指令的介绍外,也会使用图形接口工具(本书使用SourceTree)辅助说明,让大家更容易上手。
因为本人个性的关系,在学习新事物的过程中如果有疑惑的地方,总是希望可以搞懂,否则知其然而不知其所以然,无法真正把一门技术搞懂,就会痛苦得睡不着觉。正因为这样,本书在撰写的过程中,即使是很简单的内容,也希望可以尽量解释清楚。希望本书不仅可以教大家如何用(How),也能让大家知道在用什么(What),以及为什么(Why)要这样用。
虽然本书是以中文撰写,但专有名词大多还是英文。之所以用英文来表示,除了因为每个人的翻译可能不一样或翻译之后没有原文贴切之外,最重要的一点,是希望大家能尽早习惯这些英文,因为在实际工作中,很多第一手的资料都是英文的,早点习惯英文对大家绝对是有帮助的。
只要你对Git有兴趣,就可以学习本书。
如果日常工作中已经在使用Git,那么本书大部分的内容对你来说应该是比较轻松的。不过即便这样,你仍然可以从本书中学到一些“本来以为Git是这样,但其实是那样”的理念。
本书包括以下内容。
(1)常用Git指令介绍。
(2)各种Git的常见问题及使用情境。
(3)如何修改Git的历史记录。
(4)如何使用GitHub与其他人一起工作。
(5)日常工作中一般用不到,但对观念建立有帮助的冷知识。
你需要准备什么?
只要有一台可以工作的计算机(不限定操作系统)就够了。
本书主要分为以下几部分。
(1)环境安装与设定。
(2)开始使用Git。
(3)使用分支。
(4)使用标签。
(5)修改历史记录。
(6)其他常见状况。
(7)使用GitHub。
(8)使用Git Flow。
虽然每个章节的内容多少都跟前面的章节有关,但也不一定要从第1章开始依序阅读(当然这也是一种方式),可根据需要跳过部分章节。
本书使用的Git版本为2.14.1,读者可以使用git --version指令来检测自己目前所使用的Git版本。
$ git --version git version 2.14.1
如果是不同的版本,一样的指令或参数可能会有不同的执行结果。
在学习、使用Git时,经常要在终端机(Terminal)模式下输入指令。例如:
$ git add index
或者这样:
$ git commit -m "init commit" [master (root-commit) 5d47270] init commit 2 files changed, 1 insertion(+) create mode 100644 config/database.yml create mode 100644 index.html
最前面的$符号是系统提示符,告诉大家这是一条需要在终端机环境下手动输入的指令,而它的下一行则是这条指令执行的结果。实际输入指令时不要跟着输入$,否则可能会出现command not found的错误信息。
本书所有的范例在Git 2.14.1以及macOS 10.12操作系统环境下均已测试且可正常执行,部分范例可在我的GitHub账号取得。不过,由于软件的版本演进或者操作系统的不同,范例程序执行的结果可能会有些微的差异(甚至是错误)。若有任何问题,或者有哪里写错,还请大家不吝来信、留言指教。
最后,希望大家会喜欢这本书,一起来学习Git这个看似好学但又不容易学好的有趣工具。
输入指令可能很“吓人”,但它很重要!
对学习Git的新手来说,打开终端机、输入Git指令是件“吓人”的事。
即使有像SourceTree或GitHub Desktop这类方便的图形界面工具可供使用,我个人仍强烈建议一定要了解Git的运作原理。而输入、执行Git指令,正是最容易了解Git运作的方法之一。
不要害怕输入指令,不要害怕那些看起来很“吓人”的信息,不然即使有图形界面工具,也可能不知道单击某个按钮之后会发生什么事,而导致不能正确地使用Git。
很多人,包括我自己也是,在一开始学习Git的时候,心想只不过就是简单地学习git add和git commit之类的基本操作指令罢了。但其实这就犹如冰山一角,沉在水底下的比浮在水面上的要多得多,Git的运作方式远比这些指令来得复杂。所以,如果可以建立正确的观念,遇到问题的时候就不会那么迷茫,就能知道该用什么指令来解决。