Skip to content

Commit

Permalink
公钥-私钥对 => 公钥/私钥对
Browse files Browse the repository at this point in the history
  • Loading branch information
Jiang Xin committed Feb 7, 2011
1 parent ef63b14 commit 8fd8915
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 17 deletions.
4 changes: 2 additions & 2 deletions 01-meet-git/040-install-on-mac.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Mac OS X 被称为最人性化的操作系统,工作在 Mac 上是件非常惬

Git 在 Mac OS X 中也有好几种安装方法。最为简单的方式是安装 `.dmg` 格式的安装包。

访问 git-osx-installer 的官方网站: http://code.google.com/p/git-osx-installer/ ,下载 Git 安装包。安装包带有 `.dmg` 扩展名,是苹果磁盘镜像(Apple Disk Image)格式的软件发布包。从官方网站上下载文件名类似 git-a.b.c.d-<arch>-leopard.dmg 的安装包文件,例如:git-1.7.3.5-x86_64-leopard.dmg 是 64 位的安装包,git-1.7.3.5-i386-leopard.dmg 是 32 位的安装包。建议选择 64 位的软件包,因为 Mac OS X 10.6 雪豹完美的兼容 32 位和 64位(开机按住键盘数字3和2进入32位系统,按住6和4进入64位系统),即使在核心处于32位架构下,也可以放心的运行64位软件包。
访问 git-osx-installer 的官方网站: http://code.google.com/p/git-osx-installer/ ,下载 Git 安装包。安装包带有 `.dmg` 扩展名,是苹果磁盘镜像(Apple Disk Image)格式的软件发布包。从官方网站上下载文件名类似 git-<version>-<arch>-leopard.dmg 的安装包文件,例如:git-1.7.3.5-x86_64-leopard.dmg 是 64 位的安装包,git-1.7.3.5-i386-leopard.dmg 是 32 位的安装包。建议选择 64 位的软件包,因为 Mac OS X 10.6 雪豹完美的兼容 32 位和 64位(开机按住键盘数字3和2进入32位系统,按住6和4进入64位系统),即使在核心处于32位架构下,也可以放心的运行64位软件包。

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

Expand Down Expand Up @@ -53,7 +53,7 @@ Homebrew 用 ruby 语言开发,支持千余种开源软件在 Mac OS X 中的

安装完成后,Homebrew 的主程序安装在 `/usr/local/bin/brew` ,在目录 `/usr/local/Library/Formula/` 下保存了所有 Homebrew 支持的软件的安装指引文件。

运行 `brew` 安装 Git 使用下面的命令。
运行 `brew` 安装 Git使用下面的命令。

::

Expand Down
20 changes: 11 additions & 9 deletions 01-meet-git/050-install-on-windows-cygwin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ Windows 下安装和使用 Git(Cygwin篇)

Cygwin 是一款伟大的软件,通过一个小小的DLL(cygwin1.dll)建立 Linux 和 Windows 系统调用及API之间的转换,实现了 Linux 下绝大多数软件到 Windows 的迁移。Cygwin 通过 cygwin1.dll 所建立的中间层和诸如 VMWare、VirtualBox 等虚拟机软件完全不同,不会对系统资源进行独占。像 VMWare 等虚拟机,只要启动一个虚拟机(操作系统),即使不在其中执行任何命令,同样会占用大量的系统资源:内存、CPU时间等等。

Cygwin 还提供了一个强大易用的包管理工具(setup.exe),实现了几千个开源软件包在 Cygwin 下便捷的安装和升级,Git 就是 Cygwin 下支持的几千个开源软件的一员
Cygwin 还提供了一个强大易用的包管理工具(setup.exe),实现了几千个开源软件包在 Cygwin 下便捷的安装和升级,Git 就是 Cygwin 下支持的几千个开源软件中的一员

我对 Cygwin 有着深厚的感情,Cygwin 让我在 Windows 平台能用 Linux 的方式更有效率的做事,使用 Linux 风格的控制台替换 Windows 黑乎乎的、冰冷的、由 cmd.exe 提供的命令行。Cygwin 帮助我逐渐摆脱对 Linux 的依赖,当我完全转换到 Linux 平台时,没有感到一丝的障碍。
我对 Cygwin 有着深厚的感情,Cygwin 让我在 Windows 平台能用 Linux 的方式更有效率的做事,使用 Linux 风格的控制台替换 Windows 黑乎乎的、冰冷的、由 cmd.exe 提供的命令行。Cygwin 帮助我逐渐摆脱对 Windows 的依赖,当我完全转换到 Linux 平台时,没有感到一丝的障碍。


安装 Cygwin
Expand All @@ -25,7 +25,7 @@ Cygwin 还提供了一个强大易用的包管理工具(setup.exe),实现

图3-4:选择安装模式

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

.. figure:: images/windows/cygwin-3.png
:scale: 80
Expand Down Expand Up @@ -74,7 +74,7 @@ Cygwin 的软件包管理器非常强大和易用(如果习惯了其界面)

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

当通过软件包管理器对要安装的软件包定制完毕后,点击下一步,开始下载软件包、安装软件包和软件包后处理,直至完成安装。根据选择的软件包的多少,网络情况以及是否有架设好的代理服务器,首次安装 Cygwin 的时间可能从几分钟到几个小时不等。
当通过软件包管理器对要安装的软件包定制完毕后,点击下一步,开始下载软件包、安装软件包和软件包后处理,直至完成安装。根据选择的软件包的多少,网络情况以及是否架设有代理服务器,首次安装 Cygwin 的时间可能从几分钟到几个小时不等。

安装 Git
-------------
Expand Down Expand Up @@ -172,14 +172,16 @@ Windows 的文件系统忽略文件名大小写,在 Cygwin 下最好对命令
忽略文件权限的可执行位
^^^^^^^^^^^^^^^^^^^^^^^^^

Linux、Unix、Mac OS X 下的可执行文件在文件权限有特殊的设置(设置文件的可执行位),Git 可以跟踪文件的可执行位,即在添加文件时会把文件的权限也记录其中。在 Windows 上,缺乏对文件可执行位的支持和需要,虽然 Cygwin 可以模拟 Linux 下的文件授权并对文件的可执行位进行支持,但一来为支持文件权限而调用 Cygwin 的 stat() 和 lstat() 函数会比 Windows 自身的 Win32 API 要慢两倍,二来对于非跨平台项目也没有必要对文件权限位进行跟踪,还有其他 Windows 下的工具及操作可能会破坏文件的可执行位,导致 Cygwin 下的 Git 认为文件的权限更改需要重新提交。通过下面的配置,可以禁止 Git 对文件可执行位的跟踪
Linux、Unix、Mac OS X 下的可执行文件在文件权限有特殊的设置(设置文件的可执行位),Git 可以跟踪文件的可执行位,即在添加文件时会把文件的权限也记录其中。在 Windows 上,缺乏对文件可执行位的支持和需要,虽然 Cygwin 可以模拟 Linux 下的文件授权并对文件的可执行位进行支持,但一来为支持文件权限而调用 Cygwin 的 stat() 和 lstat() 函数会比 Windows 自身的 Win32 API 要慢两倍,二来对于非跨平台项目也没有必要对文件权限位进行跟踪,还有其他 Windows 下的工具及操作可能会破坏文件的可执行位,导致 Cygwin 下的 Git 认为文件的权限更改需要重新提交。通过下面的配置,可以禁止 Git 对文件权限的跟踪

::

$ git config --system core.fileMode false

在此模式下,当已添加到版本库中的文件其权限的可执行位改变时,该文件不会显示有改动。新增到版本库的文件,都以 100644 的权限添加(忽略可执行位),无论文件本身是否设置为可执行。

关于 Cygwin 的更多定制和帮助,参见网址: http://www.cygwin.com/cygwin-ug-net/ 。

Cygwin 下 Git 的中文支持
-------------------------

Expand All @@ -206,7 +208,7 @@ Cygwin 默认使用 UTF-8 字符集,并巧妙的和 Windows 系统的字符集
* 可以添加中文文件名的文件,并可以在使用 utf-8 字符集的 Linux 环境中克隆及检出。
* 可以创建带有中文字符的里程碑名称。

但是和 Linux 平台一样,在默认设置下,带有中文文件名的文件,在工作区状态输出查看历史更改概要以及在补丁文件中,文件名不能正确显示为中文,而是用若干8进制编码来显示中文,如下:
但是和 Linux 平台一样,在默认设置下,带有中文文件名的文件,在工作区状态输出查看历史更改概要以及在补丁文件中,文件名不能正确显示为中文,而是用若干8进制编码来显示中文,如下:

::

Expand All @@ -224,9 +226,9 @@ Cygwin 默认使用 UTF-8 字符集,并巧妙的和 Windows 系统的字符集
Cygwin 下 Git 访问 SSH 服务
----------------------------

在本书第5篇第29章介绍的公钥认证方式访问 Git 服务,是 Git 写操作最重要的服务。公钥认证方式访问 SSH 协议的 Git 服务器时无需输入口令,而且更为安全。使用公钥认证就涉及到创建公钥-私钥对,以及在 SSH 连接时选择哪一个私钥的问题(如果建立有多个私钥)。
在本书第5篇第29章介绍的公钥认证方式访问 Git 服务,是 Git 写操作最重要的服务。公钥认证方式访问 SSH 协议的 Git 服务器时无需输入口令,而且更为安全。使用公钥认证就涉及到创建公钥/私钥对,以及在 SSH 连接时选择哪一个私钥的问题(如果建立有多个私钥)。

Cygwin 下的 openssh 软件包提供的 ssh 命令和 Linux 下的没有什么区别,也提供 ssh-keygen 命令管理 SSH 公钥-私钥对。但是 Cygwin 当前的 openssh(版本号:5.7p1-1)有一个 Bug,偶尔在用 Git 克隆使用 SSH 协议的版本库时会中断,无法完成版本库克隆。如下:
Cygwin 下的 openssh 软件包提供的 ssh 命令和 Linux 下的没有什么区别,也提供 ssh-keygen 命令管理 SSH 公钥/私钥对。但是 Cygwin 当前的 openssh(版本号:5.7p1-1)有一个 Bug,偶尔在用 Git 克隆使用 SSH 协议的版本库时会中断,无法完成版本库克隆。如下:

::

Expand All @@ -243,7 +245,7 @@ Cygwin 下的 openssh 软件包提供的 ssh 命令和 Linux 下的没有什么
如果读者也遇到同样的问题,建议使用 PuTTY 提供的 plink.exe 做为 SSH 客户端,替代存在问题的 Cygwin 自带的 ssh 命令。

安装 PuTTY
^^^^^^^^^^^
^^^^^^^^^^

PuTTY 是 Windows 下一个开源软件,提供 SSH 客户端服务,还包括公钥管理相关工具。访问 PuTTY 的主页(http://www.chiark.greenend.org.uk/~sgtatham/putty/),下载并安装 PuTTY。安装完毕会发现 PuTTY 软件包包含了好几个可执行程序,对于和 Git 整合,下面几个命令会用到。

Expand Down
2 changes: 1 addition & 1 deletion 01-meet-git/060-install-on-windows-msysgit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ Git 在提交时并不会对提交说明进行从 GBK 字符集到 UTF-8 的转
使用 SSH 协议
------------------

msysGit 软件包包含的 ssh 命令和 Linux 下的没有什么区别,也提供 ssh-keygen 命令管理 SSH 公钥-私钥对。在使用 msysGit 的 ssh 命令时,没有遇到 Cygwin 中的 ssh 命令(版本号:5.7p1-1)不稳定的问题,即 msysGit 下的 ssh 命令可以非常稳定的工作。
msysGit 软件包包含的 ssh 命令和 Linux 下的没有什么区别,也提供 ssh-keygen 命令管理 SSH 公钥/私钥对。在使用 msysGit 的 ssh 命令时,没有遇到 Cygwin 中的 ssh 命令(版本号:5.7p1-1)不稳定的问题,即 msysGit 下的 ssh 命令可以非常稳定的工作。

如果需要和 Windows 有更好的整合,希望使用图形化工具管理公钥,也可以使用 PuTTY 提供的 plink.exe 做为 SSH 客户端。关于如何使用 PuTTY 可以参见 3.3.5 节 Cygwin 和 PuTTY 整合的相关内容。

Expand Down
10 changes: 5 additions & 5 deletions 03-git-harmony/030-git-tag.rst
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ Git 里程碑

带签名的里程碑和上面介绍的带说明的里程碑本质上是一样的,都是在创建里程碑的时候在 Git 对象库中生成一个 tag 对象,只不过带签名的里程碑多做了一个工作:为里程碑对象添加GnuPG签名。

创建带签名的里程碑也非常简单,使用参数 `-s` 或 `-u <key-id>` 即可。还可以使用 `-m <msg>` 参数直接在命令行中提供里程碑的描述。创建带签名里程碑的一个前提是需要安装 GnuPG,并且已经建立相应的公钥-私钥对。
创建带签名的里程碑也非常简单,使用参数 `-s` 或 `-u <key-id>` 即可。还可以使用 `-m <msg>` 参数直接在命令行中提供里程碑的描述。创建带签名里程碑的一个前提是需要安装 GnuPG,并且已经建立相应的公钥/私钥对。

GnuPG 可以在各个平台上安装。

Expand Down Expand Up @@ -415,7 +415,7 @@ GnuPG 可以在各个平台上安装。
error: gpg failed to sign the tag
error: unable to sign the tag

之所以签名失败,是因为找不到签名可用的公钥-私钥对。使用下面的命令可以查看当前可用的 GnuPG 公钥。
之所以签名失败,是因为找不到签名可用的公钥/私钥对。使用下面的命令可以查看当前可用的 GnuPG 公钥。

::

Expand All @@ -429,17 +429,17 @@ GnuPG 可以在各个平台上安装。

可以看到 GnuPG 的公钥链(pubring)中只包含了 `Jiang Xin` 用户的公钥,尚没有 `uesr1` 用户的公钥。

实际上在创建带签名的里程碑时,并非一定要使用邮件名匹配的公钥-私钥对进行签名,使用 `-u <key-id>` 参数调用就可以用指定的公钥-私钥对进行签名,对于此例可以使用 `FBC49D01` 作为 `<key-id>` 。但如果没有可用的公钥-私钥对,或者希望使用提交者本人的公钥-私钥对进行签名,就需要为提交者: `user1 <[email protected]>` 创建对应的公钥-私钥对。
实际上在创建带签名的里程碑时,并非一定要使用邮件名匹配的公钥/私钥对进行签名,使用 `-u <key-id>` 参数调用就可以用指定的公钥/私钥对进行签名,对于此例可以使用 `FBC49D01` 作为 `<key-id>` 。但如果没有可用的公钥/私钥对,或者希望使用提交者本人的公钥/私钥对进行签名,就需要为提交者: `user1 <[email protected]>` 创建对应的公钥/私钥对。

使用命令 `gpg --gen-key` 来创建公钥-私钥对。
使用命令 `gpg --gen-key` 来创建公钥/私钥对。

::

$ gpg --gen-key

按照提示一步一步操作即可。需要注意的有:

* 在创建公钥-私钥对时,在提示输入用户名时输入 `User1` ,在提示输入邮件地址时输入 `[email protected]` ,其他可以采用缺省值。
* 在创建公钥/私钥对时,在提示输入用户名时输入 `User1` ,在提示输入邮件地址时输入 `[email protected]` ,其他可以采用缺省值。
* 在提示输入密码时,为了简单起见可以直接按下回车,即使用空口令。
* 在生成公钥私钥对过程中,会提示用户做一些随机操作以便产生更好的随机数,这时不停的晃动鼠标就可以了。

Expand Down

0 comments on commit 8fd8915

Please sign in to comment.