@@ -33,6 +33,7 @@ $ git clone file:///opt/git/project.git
33
33
在此我们将使用普通路径,因为这样通常更快。
34
34
35
35
要增加一个本地版本库到现有的 Git 项目,可以执行如下的命令:
36
+
36
37
[source,console]
37
38
----
38
39
$ git remote add local_proj /opt/git/project.git
@@ -57,7 +58,10 @@ $ git remote add local_proj /opt/git/project.git
57
58
58
59
值得一提的是,如果你使用的是类似于共享挂载的文件系统时,这个方法不一定是最快的。
59
60
访问本地版本库的速度与你访问数据的速度是一样的。
60
- 在同一个服务器上,如果允许Git访问本地硬盘,一般的通过 NFS 访问版本库要比通过 SSH 访问慢。
61
+ 在同一个服务器上,如果允许 Git 访问本地硬盘,一般的通过 NFS 访问版本库要比通过 SSH 访问慢。
62
+
63
+ 最终,这个协议并不保护仓库避免意外的损坏。
64
+ 每一个用户都有“远程”目录的完整 shell 权限,没有方法可以阻止他们修改或删除 Git 内部文件和损坏仓库。
61
65
62
66
==== HTTP 协议
63
67
@@ -73,7 +77,10 @@ Git 1.6.6 版本引入了一种新的、更智能的协议,让 Git 可以像
73
77
(((protocols, smart HTTP)))
74
78
“智能” HTTP 协议的运行方式和 SSH 及 Git 协议类似,只是运行在标准的 HTTP/S 端口上并且可以使用各种 HTTP 验证机制,这意味着使用起来会比 SSH 协议简单的多,比如可以使用 HTTP 协议的用户名/密码的基础授权,免去设置 SSH 公钥。
75
79
76
- 智能 HTTP 协议或许已经是最流行的使用 Git 的方式了,它即支持像 `git://` 协议一样设置匿名服务,也可以像 SSH 协议一样提供传输时的授权和加密。而且只用一个 URL 就可以都做到,省去了为不同的需求设置不同的 URL。如果你要推送到一个需要授权的服务器上(一般来讲都需要),服务器会提示你输入用户名和密码,从服务器获取数据时也一样。
80
+ 智能 HTTP 协议或许已经是最流行的使用 Git 的方式了,它即支持像 `git://` 协议一样设置匿名服务,也可以像 SSH 协议一样提供传输时的授权和加密。
81
+ 而且只用一个 URL 就可以都做到,省去了为不同的需求设置不同的 URL。
82
+ 如果你要推送到一个需要授权的服务器上(一般来讲都需要),服务器会提示你输入用户名和密码。
83
+ 从服务器获取数据时也一样。
77
84
78
85
事实上,类似 GitHub 的服务,你在网页上看到的 URL (比如, `https://github.com/schacon/simplegit[]`),和你在克隆、推送(如果你有权限)时使用的是一样的。
79
86
@@ -108,7 +115,8 @@ $ git clone https://example.com/gitproject.git
108
115
这里我们用了 Apache 里设置了常用的路径 `/var/www/htdocs`,不过你可以使用任何静态 web 服务器 —— 只需要把裸版本库放到正确的目录下就可以。
109
116
Git 的数据是以基本的静态文件形式提供的(详情见 <<_git_internals>>)。
110
117
111
- 通常的,会在可以提供读/写的智能 HTTP 服务和简单的只读的哑 HTTP 服务之间选一个。极少会将二者混跑提供服务。
118
+ 通常的,会在可以提供读/写的智能 HTTP 服务和简单的只读的哑 HTTP 服务之间选一个。
119
+ 极少会将二者混合提供服务。
112
120
113
121
===== 优点
114
122
@@ -128,7 +136,9 @@ Git 的数据是以基本的静态文件形式提供的(详情见 <<_git_inter
128
136
在一些服务器上,架设 HTTP/S 协议的服务端会比 SSH 协议的棘手一些。
129
137
除了这一点,用其他协议提供 Git 服务与 “智能” HTTP 协议相比就几乎没有优势了。
130
138
131
- 如果你在 HTTP 上使用需授权的推送,管理凭证会比使用 SSH 密钥认证麻烦一些。然而,你可以选择使用凭证存储工具,比如 OSX 的 Keychain 或者 Windows 的凭证管理器。参考 <<_credential_caching>> 如何安全的保存 HTTP 密码。
139
+ 如果你在 HTTP 上使用需授权的推送,管理凭证会比使用 SSH 密钥认证麻烦一些。
140
+ 然而,你可以选择使用凭证存储工具,比如 OSX 的 Keychain 或者 Windows 的凭证管理器。
141
+ 参考 <<_credential_caching>> 如何安全地保存 HTTP 密码。
132
142
133
143
==== SSH 协议
134
144
0 commit comments