1.安装git
For Ubuntu, this PPA provides the latest stable upstream Git version
# add-apt-repository ppa:git-core/ppa
# apt update; apt install git
2.使用
如果你决定使用Git操作源码,那么首先要安装Git客户端(可以从http://git-scm.com/ 下载)。下述命令就使用Git下载示例代码:
$ git clone https://github.com/miguelgrinberg/flasky.git
git clone
命令从GitHub上下载源码,安装到当前目录下的flasky文件夹中。这个文件夹中不仅有源码,还有一个包含了程序修改完整历史的Git仓库。
第1章会要求你签出 程序的初始发布版本,然后在适当的时候指示你需要向前推进查看提交历史。切换提交历史的Git命令是git checkout
。下面举个例子:
$ git checkout 1a
上述命令中的1a
代表一个标签 (tag),是项目中某次提交历史的名字。这个仓库的标签根据本书的章节命名,因此本例中的1a
表示第1章 使用程序的初始版本。大多数章都不止使用一个标签,例如5a
和5b
等分别对应第5章 中使用到的不同版本。
除了签出程序源码的不同版本,你可能还需要进行一些设置。例如,你有时需要安装额外的Python包,或者升级数据库。需要执行这些操作时,我会提醒你。
一般情况下,你无需修改程序的源文件,但如果修改了,Git会阻止你签出其他历史版本,因为这会导致本地修改历史的丢失。签出其他历史版本之前,你要把文件还原到原始状态。最简单的方法是使用git reset
命令:
$ git reset --hard
这个命令会损坏本地修改,所以执行此命令前你需要保存所有不想丢失的改动。
你可能经常需要从GitHub上下载修正和改进后的源码用于更新本地仓库。完成这个操作的命令如下所示:
$ git fetch --all
$ git fetch --tags
$ git reset --hard origin/master
git fetch
命令用于利用GitHub上的远程仓库更新本地仓库的提交历史和标签,但不会改动真正的源文件,随后执行的git reset
命令才是用于更新文件的操作。再次提醒,执行git reset
命令后,本地修改会丢失。
另一个有用的操作是查看程序两个版本之间的区别,以便了解改动详情。在命令行中,你可以使用git diff
命令进行查看。例如,执行下述命令可以查看2a
和2b
两个修订版本之间的区别:
$ git diff 2a 2b
这个命令以补丁 (patch)的形式显示区别,如果你以前没有用过补丁文件,可能会觉得这种查看变动的方式不直观。你可能发现,GitHub网站中显示的图形化对比更容易让人理解。例如,在GitHub中查看2a
和2b
两个历史版本的区别,可以访问https://github.com/miguelgrinberg/flasky/compare/2a...2b 。