Skip to content

Commit 11e8046

Browse files
committed
Sync 04-git-server protocols
1 parent 9e1d034 commit 11e8046

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

book/04-git-server/sections/protocols.asc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ $ git clone file:///opt/git/project.git
3333
在此我们将使用普通路径,因为这样通常更快。
3434

3535
要增加一个本地版本库到现有的 Git 项目,可以执行如下的命令:
36+
3637
[source,console]
3738
----
3839
$ git remote add local_proj /opt/git/project.git
@@ -57,7 +58,10 @@ $ git remote add local_proj /opt/git/project.git
5758

5859
值得一提的是,如果你使用的是类似于共享挂载的文件系统时,这个方法不一定是最快的。
5960
访问本地版本库的速度与你访问数据的速度是一样的。
60-
在同一个服务器上,如果允许Git访问本地硬盘,一般的通过 NFS 访问版本库要比通过 SSH 访问慢。
61+
在同一个服务器上,如果允许 Git 访问本地硬盘,一般的通过 NFS 访问版本库要比通过 SSH 访问慢。
62+
63+
最终,这个协议并不保护仓库避免意外的损坏。
64+
每一个用户都有“远程”目录的完整 shell 权限,没有方法可以阻止他们修改或删除 Git 内部文件和损坏仓库。
6165

6266
==== HTTP 协议
6367

@@ -73,7 +77,10 @@ Git 1.6.6 版本引入了一种新的、更智能的协议,让 Git 可以像
7377
(((protocols, smart HTTP)))
7478
“智能” HTTP 协议的运行方式和 SSH 及 Git 协议类似,只是运行在标准的 HTTP/S 端口上并且可以使用各种 HTTP 验证机制,这意味着使用起来会比 SSH 协议简单的多,比如可以使用 HTTP 协议的用户名/密码的基础授权,免去设置 SSH 公钥。
7579

76-
智能 HTTP 协议或许已经是最流行的使用 Git 的方式了,它即支持像 `git://` 协议一样设置匿名服务,也可以像 SSH 协议一样提供传输时的授权和加密。而且只用一个 URL 就可以都做到,省去了为不同的需求设置不同的 URL。如果你要推送到一个需要授权的服务器上(一般来讲都需要),服务器会提示你输入用户名和密码,从服务器获取数据时也一样。
80+
智能 HTTP 协议或许已经是最流行的使用 Git 的方式了,它即支持像 `git://` 协议一样设置匿名服务,也可以像 SSH 协议一样提供传输时的授权和加密。
81+
而且只用一个 URL 就可以都做到,省去了为不同的需求设置不同的 URL。
82+
如果你要推送到一个需要授权的服务器上(一般来讲都需要),服务器会提示你输入用户名和密码。
83+
从服务器获取数据时也一样。
7784

7885
事实上,类似 GitHub 的服务,你在网页上看到的 URL (比如, `https://github.com/schacon/simplegit[]`),和你在克隆、推送(如果你有权限)时使用的是一样的。
7986

@@ -108,7 +115,8 @@ $ git clone https://example.com/gitproject.git
108115
这里我们用了 Apache 里设置了常用的路径 `/var/www/htdocs`,不过你可以使用任何静态 web 服务器 —— 只需要把裸版本库放到正确的目录下就可以。
109116
Git 的数据是以基本的静态文件形式提供的(详情见 <<_git_internals>>)。
110117

111-
通常的,会在可以提供读/写的智能 HTTP 服务和简单的只读的哑 HTTP 服务之间选一个。极少会将二者混跑提供服务。
118+
通常的,会在可以提供读/写的智能 HTTP 服务和简单的只读的哑 HTTP 服务之间选一个。
119+
极少会将二者混合提供服务。
112120

113121
===== 优点
114122

@@ -128,7 +136,9 @@ Git 的数据是以基本的静态文件形式提供的(详情见 <<_git_inter
128136
在一些服务器上,架设 HTTP/S 协议的服务端会比 SSH 协议的棘手一些。
129137
除了这一点,用其他协议提供 Git 服务与 “智能” HTTP 协议相比就几乎没有优势了。
130138

131-
如果你在 HTTP 上使用需授权的推送,管理凭证会比使用 SSH 密钥认证麻烦一些。然而,你可以选择使用凭证存储工具,比如 OSX 的 Keychain 或者 Windows 的凭证管理器。参考 <<_credential_caching>> 如何安全的保存 HTTP 密码。
139+
如果你在 HTTP 上使用需授权的推送,管理凭证会比使用 SSH 密钥认证麻烦一些。
140+
然而,你可以选择使用凭证存储工具,比如 OSX 的 Keychain 或者 Windows 的凭证管理器。
141+
参考 <<_credential_caching>> 如何安全地保存 HTTP 密码。
132142

133143
==== SSH 协议
134144

0 commit comments

Comments
 (0)