Skip to content

Commit

Permalink
update image files path: images/ => /images/
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangxin committed Oct 27, 2011
1 parent 646c9e9 commit 9543f27
Show file tree
Hide file tree
Showing 27 changed files with 154 additions and 142 deletions.
6 changes: 3 additions & 3 deletions 01-meet-git/010-scm-history.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Git 是开源社区送给每一个人的宝贝,用好它可以实现个人的

|ICON-SOUND| 还有在这里有必要纠正一下Git的发音。一种错误是按照单个字母来发音,另外一种更为普遍的错误是把整个单词读作“吉他”,实际上Git中字母G的发音应该是和下列单词中的G类似:GOD GIVES GREAT GIFT。因此Git正确的发音应该听起来像是“歌易他”。在我的一再坚持下,编辑同意本书的英文名(如果有的话)为《Got Git》,当面对这样的书名时您还会把Git读错么?

.. |ICON-SOUND| image:: images/meet-git/icon-01-01-sound.png
.. |ICON-SOUND| image:: /images/meet-git/icon-01-01-sound.png

版本控制的前世和今生
********************
Expand Down Expand Up @@ -166,7 +166,7 @@ CVS (Concurrent Versions System) 诞生于 1985 年,是由荷兰阿姆斯特

图1-1展示了CVS版本控制系统工作原理,可以看出做为RCS文件容器的CVS版本库和工作区目录结构的一一对应关系。

.. figure:: images/meet-git/cvs-arch.png
.. figure:: /images/meet-git/cvs-arch.png
:scale: 80

图1-1:CVS版本控制系统示意图
Expand Down Expand Up @@ -199,7 +199,7 @@ Subversion,因其命令行工具名为 `svn` 因此通常简称为 SVN。SVN

我开始真正关注 SVN 是在 2005 年,那时 SVN 正经历着后端存储上的变革,即从BDB 简单的关系型数据库到 FSFS 文件数据库的转变。FSFS 相对于 BDB 的稳定性、免维护性,以及实现的可视性,我马上就被 SVN 吸引了。图1-2展示了SVN版本控制系统的工作原理。

.. figure:: images/meet-git/svn-arch.png
.. figure:: /images/meet-git/svn-arch.png
:scale: 80

图1-2:SVN版本控制系统示意图
Expand Down
4 changes: 2 additions & 2 deletions 01-meet-git/020-love-git.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

当我开始撰写本书时才明白了写书真的是一个辛苦活。如何让辛苦的工作不会因为笔记本硬盘的意外损坏而丢失?如何防范灾害而不让一个篮子里的鸡蛋都毁于一旦?下面就介绍一下我在写本书时,如何使用 Git 进行文稿的备份。

.. figure:: images/meet-git/work-backup.png
.. figure:: /images/meet-git/work-backup.png
:scale: 65

图2-1:利用 Git 做数据的备份
Expand Down Expand Up @@ -40,7 +40,7 @@
为了能够加快写书的进度,熬夜是必须的,这就出现了公司和家两地工作同步的问题。图2-2用于说明我是如何解决两地工作同步的问题的。


.. figure:: images/meet-git/workflow.png
.. figure:: /images/meet-git/workflow.png
:scale: 65

图2-2:利用 Git 实现异地工作协同
Expand Down
6 changes: 3 additions & 3 deletions 01-meet-git/040-install-on-mac.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Git 在 Mac OS X 中也有好几种安装方法。最为简单的方式是安装

苹果的 `.dmg` 格式的软件包实际上是一个磁盘映像,安装起来非常方便,点击该文件就直接挂载到 Finder 中,并打开,如图3-1所示。

.. figure:: images/meet-git/mac-install-1.png
.. figure:: /images/meet-git/mac-install-1.png
:scale: 100

图3-1:在 Mac OS X 下打开 .dmg 格式磁盘镜像
Expand All @@ -21,7 +21,7 @@ Git 在 Mac OS X 中也有好几种安装方法。最为简单的方式是安装

点击扩展名为 `.pkg` 的安装程序,开始 Git 的安装,根据提示按步骤完成安装,如图3-2所示。

.. figure:: images/meet-git/mac-install-2.png
.. figure:: /images/meet-git/mac-install-2.png
:scale: 100

图3-2:在 Mac OS X 下安装 Git。
Expand All @@ -33,7 +33,7 @@ Git 在 Mac OS X 中也有好几种安装方法。最为简单的方式是安装

Mac OS X 基于 Unix 内核,因此也可以很方便的通过源码编译的方式进行安装,但是缺省安装的 Mac OS X 缺乏相应的开发工具,需要安装苹果提供的 Xcode 软件包。在 Mac 随机附送的光盘(Mac OS X Install DVD)的可选安装文件夹下就有 Xcode 的安装包(如图3-3所示),通过随机光盘安装 Xcode 可以省去了网络下载的麻烦,要知道 Xcode 有3GB以上。

.. figure:: images/meet-git/xcode-install.png
.. figure:: /images/meet-git/xcode-install.png
:scale: 100

图3-3:在 Mac OS X 下安装 Xcode。
Expand Down
28 changes: 14 additions & 14 deletions 01-meet-git/050-install-on-windows-cygwin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,56 +20,56 @@ Cygwin 还提供了一个强大易用的包管理工具(setup.exe),实现
安装过程会让用户选择安装模式,可以选择网络安装、仅下载,或者通过本地软件包缓存(在安装过程自动在本地目录下建立软件包缓存)进行安装。如果是第一次安装 Cygwin,因为本地尚没有软件包缓存,当然只能选择从网络安装,如图3-4所示。


.. figure:: images/windows/cygwin-2.png
.. figure:: /images/windows/cygwin-2.png
:scale: 80

图3-4:选择安装模式

接下来,Cygwin 询问安装目录,默认为 `C:\\cygwin` ,如图3-5所示。这个目录将作为 Cygwin shell 环境的根目录(根卷),Windows 的各个盘符将挂载在根卷一个特殊目录之下。

.. figure:: images/windows/cygwin-3.png
.. figure:: /images/windows/cygwin-3.png
:scale: 80

图3-5:选择安装目录

询问本地软件包缓存目录,默认是 `setup.exe` 所处的目录,如图3-6所示。

.. figure:: images/windows/cygwin-4.png
.. figure:: /images/windows/cygwin-4.png
:scale: 80

图3-6:选择本地软件包缓存目录

询问网络连接方式,是否使用代理等,如图3-7所示。默认会选择第一项:“直接网络连接”。如果一个团队有很多人要使用 Cygwin,架设一个能够提供软件包缓存的 HTTP 代理服务器会节省大量的网络带宽和节省大把的时间。用 Debian 的 apt-cacher-ng 就可以非常简单的搭建一个软件包代理服务器。图3-7显示的就是我在公司内网安装 Cygwin 时使用了我们公司内网的服务器 `bj.ossxp.com` 做为 HTTP 代理的截图,端口设置为 9999,因为这是 apt-cacher-ng 的默认端口。

.. figure:: images/windows/cygwin-5-mirror.png
.. figure:: /images/windows/cygwin-5-mirror.png
:scale: 80

图3-7:是否使用代理下载 Cygwin 软件包

选择一个 Cygwin 源,如图3-8所示。如果在上一个步骤选择了使用 HTTP 代理服务器,就必须选择 HTTP 协议的 Cygwin 源。

.. figure:: images/windows/cygwin-6.png
.. figure:: /images/windows/cygwin-6.png
:scale: 80

图3-8:选择 Cygwin 源

接下来就会从所选的 Cygwin 源下载软件包索引文件,然后显示软件包管理器界面,如图3-9所示。

.. figure:: images/windows/cygwin-8.png
.. figure:: /images/windows/cygwin-8.png
:scale: 80

图3-9:Cygwin 软件包管理器

Cygwin 的软件包管理器非常强大和易用(如果习惯了其界面)。软件包归类于各个分组中,点击分组前的加号就可以展开分组。在展开的 Admin 分组中,如图3-10所示(这个截图不是首次安装 Cygwin 的截图),有的软件包如 `libattr1` 已经安装过了,因为没有新版本而标记为“Keep”(保持)。至于没有安装过并且不准备安装的软件包则标记为 “Skip”(跳过)。

.. figure:: images/windows/cygwin-8-expand-admin-group.png
.. figure:: /images/windows/cygwin-8-expand-admin-group.png
:scale: 80

图3-10:Cygwin 软件包管理器展开分组

鼠标点击分组名称后面动作名称(文字“Default”),会进行软件包安装动作的切换。例如图3-11,将 Admin 分组的安装动作由“Default”(默认)切换为“Install”(安装),会看到 Admin 分组下的所有软件包都标记为安装(显示具体要安装的软件包版本号)。也可以通过鼠标点击,单独的为软件包进行安装动作的设定,可以强制重新安装、安装旧版本、或者不安装。

.. figure:: images/windows/cygwin-8-expand-admin-group-install.png
.. figure:: /images/windows/cygwin-8-expand-admin-group-install.png
:scale: 80

图3-11:Cygwin 软件包管理器展开分组
Expand All @@ -81,14 +81,14 @@ Cygwin 的软件包管理器非常强大和易用(如果习惯了其界面)

默认安装的 Cygwin 没有安装 Git 软件包。如果在首次安装过程中忘记通过包管理器选择安装 Git 或其他相关软件包,可以在安装后再次运行 Cygwin 的安装程序 `setup.exe` 。当再次进入 Cygwin 包管理器界面时,在搜索框中输入 git。如图3-12所示。

.. figure:: images/windows/cygwin-8-search-git.png
.. figure:: /images/windows/cygwin-8-search-git.png
:scale: 80

图3-12:Cygwin 软件包管理器中搜索 git

从图3-12中看出在 Cygwin 中包含了很多和 Git 相关的软件包,把这些 Git 相关的软件包都安装吧,如图3-13所示。

.. figure:: images/windows/cygwin-8-search-git-install.png
.. figure:: /images/windows/cygwin-8-search-git-install.png
:scale: 80

图3-13:Cygwin 软件包管理器中安装 git
Expand All @@ -105,7 +105,7 @@ Cygwin 的配置和使用

运行 Cygwin,就会进入 shell 环境中,见到熟悉的 Linux 提示符。如图 3-14 所示。

.. figure:: images/windows/cygwin-startup.png
.. figure:: /images/windows/cygwin-startup.png
:scale: 80

图3-14:运行 Cygwin
Expand Down Expand Up @@ -258,14 +258,14 @@ PuTTY 使用自定义格式的私钥文件(扩展名为 `.ppk` ),而不能

运行 PuTTYgen 程序,如图3-15所示。

.. figure:: images/windows/putty-keygen-1.png
.. figure:: /images/windows/putty-keygen-1.png
:scale: 80

图3-15:运行 PuTTYgen 程序

PuTTYgen 既可以重新创建私钥文件,也可以通过点击加载按钮(load)读取 openssh 格式的私钥文件,从而可以将其转换为 PuTTY 格式私钥。点击加载按钮,会弹出文件选择对话框,选择 openssh 格式的私钥文件(如文件 id_rsa),如果转换成功,会显示如图3-16的界面。

.. figure:: images/windows/putty-keygen-2.png
.. figure:: /images/windows/putty-keygen-2.png
:scale: 80

图3-16:PuTTYgen 完成私钥加载
Expand All @@ -279,7 +279,7 @@ Git 在使用命令行工具 Plink( `plink.exe` )做为 SSH 客户端访问

运行 Pageant ,启动后显示为托盘区中的一个图标,在后台运行。当使用鼠标右键单击 Pageant 的图标,就会显示弹出菜单如图3-17所示。

.. figure:: images/windows/pageant.png
.. figure:: /images/windows/pageant.png
:scale: 80

图3-17:Pageant 的弹出菜单
Expand Down
20 changes: 10 additions & 10 deletions 01-meet-git/060-install-on-windows-msysgit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,28 @@ msysGit 的名字前面的四个字母来源于 MSYS 项目。MSYS 项目源自

点击下载的安装程序(如 `Git-1.7.3.1-preview20101002.exe` ),开始安装,如图3-18。

.. figure:: images/windows/msysgit-1.png
.. figure:: /images/windows/msysgit-1.png
:scale: 80

图3-18:启动 msysGit 安装

默认安装到 `C:\\Program Files\\Git` 目录中。

.. figure:: images/windows/msysgit-3.png
.. figure:: /images/windows/msysgit-3.png
:scale: 80

图3-19:选择 msysGit 的安装目录

在安装过程中会询问是否修改环境变量,如图3-20。默认选择“Use Git Bash Only”,即只在 msysGit 提供的 shell 环境(类似 Cygwin)中使用 Git,不修改环境变量。注意如果选择最后一项,会将 msysGit 所有的可执行程序全部加入 Windows 的 PATH 路径中,有的命令会覆盖 Windows 相同文件名的程序(如 find.exe 和 sort.exe)。而且如果选择最后一项,还会为 Windows 添加 HOME 环境变量,如果安装有 Cygwin,Cygwin 会受到 msysGit 引入的 HOME 环境变量的影响(参见前面 3.3.3 节的相关讨论)。

.. figure:: images/windows/msysgit-6.png
.. figure:: /images/windows/msysgit-6.png
:scale: 80

图3-20:是否修改系统的环境变量

还会询问换行符的转换方式,使用默认设置就好。参见图3-21。关于换行符转换,参见本书第8篇相关章节。

.. figure:: images/windows/msysgit-8.png
.. figure:: /images/windows/msysgit-8.png
:scale: 80

图3-21:换行符转换方式
Expand All @@ -45,7 +45,7 @@ msysGit 的配置和使用

完成 msysGit 的安装后,点击 Git Bash 图标,启动 msysGit,如图3-22。会发现 Git Bash 的界面和 Cygwin 的非常相像。

.. figure:: images/windows/msysgit-startup.png
.. figure:: /images/windows/msysgit-startup.png
:scale: 80

图3-22:启动 Git Bash
Expand Down Expand Up @@ -204,35 +204,35 @@ TortoiseGit 是对 msysGit 命令行的封装,因此需要先安装 msysGit。

安装过程中会询问要使用的 SSH 客户端,如图3-23。缺省使用内置的 TortoisePLink(来自 PuTTY 项目)做为 SSH 客户端。

.. figure:: images/windows/tgit-3.png
.. figure:: /images/windows/tgit-3.png
:scale: 80

图3-23:启动 Git Bash

TortoisePLink 和 TortoiseGit 的整合性更好,可以直接通过对话框设置 SSH 私钥(PuTTY格式),而无需再到字符界面去配置 SSH 私钥和其他配置文件。如果安装过程中选择了 OpenSSH,可以在安装完毕之后,通过 TortoiseGit 的设置对话框重新选择 TortoisePLink 做为缺省 SSH 客户端程序,如图3-24。

.. figure:: images/windows/tgit-settings-network-plink.png
.. figure:: /images/windows/tgit-settings-network-plink.png
:scale: 80

图3-24:配置缺省 SSH 客户端

当配置使用 TortoisePLink 做为缺省 SSH 客户端时,在执行克隆操作时,在操作界面中可以选择一个 PuTTY 格式的私钥文件进行认证,如图3-25。

.. figure:: images/windows/tgit-clone.png
.. figure:: /images/windows/tgit-clone.png
:scale: 80

图3-25:克隆操作选择 PuTTY 格式私钥文件

如果连接一个服务器的 SSH 私钥需要更换,可以通过 Git 远程服务器配置界面对私钥文件进行重新设置。如图3-26。

.. figure:: images/windows/tgit-settings-remote.png
.. figure:: /images/windows/tgit-settings-remote.png
:scale: 80

图3-26:更换连接远程 SSH 服务器的私钥

如果安装有多个 msysGit 拷贝,也可以通过 TortoiseGit 的配置界面进行选择,如图3-27。

.. figure:: images/windows/tgit-settings-general.png
.. figure:: /images/windows/tgit-settings-general.png
:scale: 80

图3-27:配置 msysGit 的可执行程序位置
Expand Down
2 changes: 1 addition & 1 deletion 02-git-solo/010-git-init.rst
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ Android 项目为了更好的使用 Git 实现对代码的集中管理,开发

例如 Redmine 是一款实现需求管理和缺陷跟踪的项目管理软件,可以和 Git 版本库实现整合。Git 的提交可以直接关闭 Redmine 上的 Bug,还有 Git 的提交可以反映出项目成员的工作进度。Redmine 中的用户(项目成员)是用一个ID做标识,而Git的提交者则用一个包含用户名和邮件地址的字符串,如何将 Redmine 的用户和 Git 提交者相关联呢?Redmine 提供了一个配置界面用于设置二者之间的关系,如图4-1所示。

.. figure:: images/git-solo/redmine-user-config.png
.. figure:: /images/git-solo/redmine-user-config.png
:scale: 70

图 4‑1:Redmine中用户ID和Git提交者关联
Expand Down
4 changes: 2 additions & 2 deletions 02-git-solo/020-git-stage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ Git 暂存区

文件 `.git/index` 实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等)。文件的内容并不存储其中,而是保存在 Git 对象库 `.git/objects` 目录中,文件索引建立了文件和对象库中对象实体之间的对应。下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系。

.. figure:: images/git-solo/git-stage.png
.. figure:: /images/git-solo/git-stage.png
:scale: 80

工作区、版本库、暂存区原理图
Expand Down Expand Up @@ -489,7 +489,7 @@ Git Diff 魔法

通过使用不同的参数调用 `git diff` 命令,可以对工作区、暂存区、HEAD 中的内容两两比较。下面的这个图,展示了不同的 `git diff` 命令的作用范围。

.. figure:: images/git-solo/git-diff.png
.. figure:: /images/git-solo/git-diff.png
:scale: 80

通过上面的图,就不难理解下面 `git diff` 命令不同的输出结果了。
Expand Down
4 changes: 2 additions & 2 deletions 02-git-solo/030-head-master-commit-refs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ Git对象库探秘

下面的图示更加清楚的显示了 Git 对象库中各个对象之间的关系。

.. figure:: images/git-solo/git-objects.png
.. figure:: /images/git-solo/git-objects.png
:scale: 100

从上面的图示中很明显的看出提交(Commit)对象之间相互关联,通过相互之间的关联则很容易的识别出一条跟踪链。这条跟踪链可以在运行 `git log` 命令时,通过使用 `--graph` 参数看到。下面的命令还使用了 `--pretty=raw` 参数以便显示每个提交对象的 parent 属性。
Expand Down Expand Up @@ -243,7 +243,7 @@ Git对象库探秘

下面看一个更接近于真实的版本库结构图:

.. figure:: images/git-solo/git-repos-detail.png
.. figure:: /images/git-solo/git-repos-detail.png
:scale: 100

目录 `.git/refs` 是保存引用的命名空间,其中 `.git/refs/heads` 目录下的引用又称为分支。对于分支既可以使用正规的长格式的表示法,如 `refs/heads/master` ,也可以去掉前面的两级目录用 `master` 来表示。Git 有一个底层命令 `git rev-parse` 可以用于显示引用对应的提交 ID。
Expand Down
2 changes: 1 addition & 1 deletion 02-git-solo/040-git-reset.rst
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ Git 提供了一个 `git reflog` 命令,对这个文件进行操作。使用 s

第二种用法(不使用路径 `<paths>` 的用法)则会 **重置引用** 。根据不同的选项,可以对暂存区或者工作区进行重置。参照下面的版本库模型图,来看一看不同的参数对第二种重置语法的影响。

.. figure:: images/git-solo/git-reset.png
.. figure:: /images/git-solo/git-reset.png
:scale: 80

命令格式: git reset [--soft | --mixed | --hard ] [<commit>]
Expand Down
2 changes: 1 addition & 1 deletion 02-git-solo/050-git-checkout.rst
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ HEAD 可以理解为“头指针”,是当前工作区的“基础版本”,

下面的版本库模型图描述了 `git checkout` 实际完成的操作。

.. figure:: images/git-solo/git-checkout.png
.. figure:: /images/git-solo/git-checkout.png
:scale: 80

下面通过一些示例,具体的看一下检出命令的不同用法。
Expand Down
Loading

0 comments on commit 9543f27

Please sign in to comment.