Skip to content

Commit bb9b599

Browse files
committed
Upgrade
1 parent 033181a commit bb9b599

File tree

3 files changed

+27
-28
lines changed

3 files changed

+27
-28
lines changed

book/10-git-internals/1-git-internals.asc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
早期的 Git(主要是 1.5 之前的版本)的用户界面要比现在复杂的多,因为它更侧重于作为一个文件系统,而不是一个打磨过的版本控制系统。
1313
不时会有一些陈词滥调抱怨早期那个晦涩复杂的 Git 用户界面;不过最近几年来,它已经被改进到不输于任何其他版本控制系统地清晰易用了。
1414

15-
内容寻址文件系统层是一套相当酷的东西,所以在本章我会先讲解这部分内容。随后我们会学习传输机制和版本库管理任务——你迟早会和它们打交道。
15+
内容寻址文件系统层是一套相当酷的东西,所以在本章我们会先讲解这部分内容。随后我们会学习传输机制和版本库管理任务——你迟早会和它们打交道。
1616

1717
include::sections/plumbing-porcelain.asc[]
1818

book/10-git-internals/sections/maintenance.asc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ cac0cab538b970a37ea1e769cbbde608743bc96d refs/tags/v1.0
4949
----
5050

5151
如果你更新了引用,Git 并不会修改这个文件,而是向 `refs/heads` 创建一个新的文件。
52-
为了获得指定引用的正确 SHA 值,Git 会首先在 `refs` 目录中查找指定的引用,然后再到 `packed-refs` 文件中查找。
52+
为了获得指定引用的正确 SHA-1 值,Git 会首先在 `refs` 目录中查找指定的引用,然后再到 `packed-refs` 文件中查找。
5353
所以,如果你在 `refs` 目录中找不到一个引用,那么它或许在 `packed-refs` 文件中。
5454

5555
注意这个文件的最后一行,它会以 `^` 开头。
@@ -88,13 +88,13 @@ fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit
8888
----
8989

9090
现在顶部的两个提交已经丢失了 - 没有分支指向这些提交。
91-
你需要找出最后一次提交的 SHA 然后增加一个指向它的分支。
92-
窍门就是找到最后一次的提交的 SHA - 但是估计你记不起来了,对吗?
91+
你需要找出最后一次提交的 SHA-1 然后增加一个指向它的分支。
92+
窍门就是找到最后一次的提交的 SHA-1 - 但是估计你记不起来了,对吗?
9393

9494
最方便,也是最常用的方法,是使用一个名叫 `git reflog` 的工具。
9595
当你正在工作时,Git 会默默地记录每一次你改变 HEAD 时它的值。
9696
每一次你提交或改变分支,引用日志都会被更新。
97-
引用日志(reflog)也可以通过 `git update-ref` 命令更新,我们在 <<_git_refs>> 有提到使用这个命令而不是是直接将 SHA 的值写入引用文件中的原因。
97+
引用日志(reflog)也可以通过 `git update-ref` 命令更新,我们在 <<_git_refs>> 有提到使用这个命令而不是是直接将 SHA-1 的值写入引用文件中的原因。
9898
你可以在任何时候通过执行 `git reflog` 命令来了解你曾经做过什么:
9999

100100
[source,console]
@@ -263,7 +263,7 @@ dadf7258d699da2c8d89b09ef6670edb7d5f91b4 commit 229 159 12
263263

264264
你可以看到这个大对象出现在返回结果的最底部:占用 5MB 空间。
265265
为了找出具体是哪个文件,可以使用 `rev-list` 命令,我们在 <<_enforcing_commit_message_format>> 中曾提到过。
266-
如果你传递 `--objects` 参数给 `rev-list` 命令,它就会列出所有提交的 SHA、数据对象的 SHA 和与它们相关联的文件路径。
266+
如果你传递 `--objects` 参数给 `rev-list` 命令,它就会列出所有提交的 SHA-1、数据对象的 SHA-1 和与它们相关联的文件路径。
267267
可以使用以下命令来找出你的数据对象的名字:
268268

269269
[source,console]
@@ -288,7 +288,7 @@ dadf725 oops - removed large tarball
288288
[source,console]
289289
----
290290
$ git filter-branch --index-filter \
291-
'git rm --cached --ignore-unmatch git.tgz' -- 7b30847^..
291+
'git rm --ignore-unmatch --cached git.tgz' -- 7b30847^..
292292
Rewrite 7b30847d080183a1ab7d18fb202473b3096e9f34 (1/2)rm 'git.tgz'
293293
Rewrite dadf7258d699da2c8d89b09ef6670edb7d5f91b4 (2/2)
294294
Ref 'refs/heads/master' was rewritten
@@ -300,7 +300,7 @@ Ref 'refs/heads/master' was rewritten
300300
还有一个原因是速度 - Git 在运行过滤器时,并不会检出每个修订版本到磁盘中,所以这个过程会非常快。
301301
如果愿意的话,你也可以通过 `--tree-filter` 选项来完成同样的任务。
302302
`git rm` 命令的 `--ignore-unmatch` 选项告诉命令:如果尝试删除的模式不存在时,不提示错误。
303-
最后,使用 `filter-branch` 选项来重写自 `6df7640` 提交以来的历史,也就是这个问题产生的地方。
303+
最后,使用 `filter-branch` 选项来重写自 `7b30847` 提交以来的历史,也就是这个问题产生的地方。
304304
否则,这个命令会从最旧的提交开始,这将会花费许多不必要的时间。
305305

306306
你的历史中将不再包含对那个文件的引用。

book/10-git-internals/sections/transfer-protocols.asc

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ $ git clone http://server/simplegit-progit.git
3131
ca82a6dff817ec66f44342007202690a93763949 refs/heads/master
3232
----
3333

34-
现在,你得到了一个远程引用和 SHA 值的列表。
34+
现在,你得到了一个远程引用和 SHA-1 值的列表。
3535
接下来,你要确定 HEAD 引用是什么,这样你就知道在完成后应该被检出到工作目录的内容:
3636

3737
[source]
@@ -110,7 +110,7 @@ P pack-816a9b2334da9953e530f27bcac22082a9f5b835.pack
110110
(4k of binary data)
111111
----
112112

113-
现在你有这个包文件的索引,你可以查看你要的对象是否在里面——因为索引文件列出了这个包文件所包含的所有对象的 SHA 值,和该对象存在于包文件中的偏移量。
113+
现在你有这个包文件的索引,你可以查看你要的对象是否在里面——因为索引文件列出了这个包文件所包含的所有对象的 SHA-1 值,和该对象存在于包文件中的偏移量。
114114
你的对象就在这里,接下来就是获取整个包文件:
115115

116116
[source]
@@ -144,14 +144,13 @@ Git 会运行 `send-pack` 进程,它会通过 SSH 连接你的服务器。
144144
[source,console]
145145
----
146146
$ ssh -x git@server "git-receive-pack 'simplegit-progit.git'"
147-
005bca82a6dff817ec66f4437202690a93763949 refs/heads/master report-status \
147+
00a5ca82a6dff817ec66f4437202690a93763949 refs/heads/master report-status \
148148
delete-refs side-band-64k quiet ofs-delta \
149-
agent=git/2:2.1.1+github-607-gfba4028 delete-refs
150-
003e085bb3bcb608e1e84b2432f8ecbe6306e7e7 refs/heads/topic
149+
agent=git/2:2.1.1+github-607-gfba4028 delete-refs
151150
0000
152151
----
153152

154-
`git-receive-pack` 命令会立即为它所拥有的每一个引用发送一行响应——在这个例子中,就只有 `master` 分支和它的SHA值
153+
`git-receive-pack` 命令会立即为它所拥有的每一个引用发送一行响应——在这个例子中,就只有 `master` 分支和它的 SHA-1 值
155154
第一行响应中也包含了一个服务端能力的列表(这里是 `report-status`、`delete-refs` 和一些其它的,包括客户端的识别码)。
156155

157156
每一行以一个四位的十六进制值开始,用于指明本行的长度。
@@ -165,14 +164,14 @@ agent=git/2:2.1.1+github-607-gfba4028 delete-refs
165164

166165
[source]
167166
----
168-
0085ca82a6dff817ec66f44342007202690a93763949 15027957951b64cf874c3557a0f3547bd83b3ff6 \
167+
0076ca82a6dff817ec66f44342007202690a93763949 15027957951b64cf874c3557a0f3547bd83b3ff6 \
169168
refs/heads/master report-status
170-
00670000000000000000000000000000000000000000 cdfdb42577e2506715f8cfeacdbabc092bf63e8d \
169+
006c0000000000000000000000000000000000000000 cdfdb42577e2506715f8cfeacdbabc092bf63e8d \
171170
refs/heads/experiment
172171
0000
173172
----
174173

175-
Git 会为每一个将要更新的引用发送一行数据,包括该行长度,旧 SHA 值,新 SHA 值和将要更新的引用。
174+
Git 会为每一个将要更新的引用发送一行数据,包括该行长度,旧 SHA-1 值,新 SHA-1 值和将要更新的引用。
176175
第一行也包括了客户端的能力。
177176
这里的全为 '0' 的 SHA-1 值表示之前没有过这个引用——因为你正要添加新的 experiment 引用。
178177
删除引用时,将会看到相反的情况:右边的 SHA-1 值全为 '0'。
@@ -182,7 +181,7 @@ Git 会为每一个将要更新的引用发送一行数据,包括该行长度
182181

183182
[source]
184183
----
185-
000Aunpack ok
184+
000eunpack ok
186185
----
187186

188187
====== HTTP(S)
@@ -194,8 +193,8 @@ HTTPS 与 HTTP 相比较,除了在“握手”过程略有不同外,其他
194193
----
195194
=> GET http://server/simplegit-progit.git/info/refs?service=git-receive-pack
196195
001f# service=git-receive-pack
197-
000000ab6c5f0e45abd7832bf23074a333f739977c9e8188 refs/heads/master \
198-
report-status delete-refs side-band-64k quiet ofs-delta \
196+
00ab6c5f0e45abd7832bf23074a333f739977c9e8188 refs/heads/master report-status \
197+
delete-refs side-band-64k quiet ofs-delta \
199198
agent=git/2:2.1.1~vmg-bitmaps-bugaloo-608-g116744e
200199
0000
201200
----
@@ -205,7 +204,7 @@ HTTPS 与 HTTP 相比较,除了在“握手”过程略有不同外,其他
205204

206205
[source]
207206
----
208-
=> POST http://server/simplegit-progit.git/git-receive/pack
207+
=> POST http://server/simplegit-progit.git/git-receive-pack
209208
----
210209

211210
这个 `POST` 请求的内容是 `send-pack` 的输出和相应的包文件。
@@ -230,27 +229,27 @@ $ ssh -x git@server "git-upload-pack 'simplegit-progit.git'"
230229

231230
[source]
232231
----
233-
00dfca82a6dff817ec66f44342007202690a93763949 HEADmulti_ack thin-pack \
232+
00dfca82a6dff817ec66f44342007202690a93763949 HEAD multi_ack thin-pack \
234233
side-band side-band-64k ofs-delta shallow no-progress include-tag \
235234
multi_ack_detailed symref=HEAD:refs/heads/master \
236235
agent=git/2:2.1.1+github-607-gfba4028
237-
003fca82a6dff817ec66f44342007202690a93763949 refs/heads/master
236+
003fe2409a098dc3e53539a9028a94b6224db9d6a6b6 refs/heads/master
238237
0000
239238
----
240239

241240
这与 `receive-pack` 的响应很相似,但是这里所包含的能力是不同的。
242241
而且它还包含 HEAD 引用所指向内容(`symref=HEAD:refs/heads/master`),这样如果客户端执行的是克隆,它就会知道要检出什么。
243242

244-
这时候,`fetch-pack` 进程查看它自己所拥有的对象,并响应“want”和它需要的对象的 SHA 值。
245-
它还会发送“have”和所有它已拥有的对象的 SHA 值。
243+
这时候,`fetch-pack` 进程查看它自己所拥有的对象,并响应 “want” 和它需要的对象的 SHA-1 值。
244+
它还会发送“have”和所有它已拥有的对象的 SHA-1 值。
246245
在列表的最后,它还会发送“done”以通知 `upload-pack` 进程可以开始发送它所需对象的包文件:
247246

248247
[source]
249248
----
250-
0054want ca82a6dff817ec66f44342007202690a93763949 ofs-delta
249+
003cwant ca82a6dff817ec66f44342007202690a93763949 ofs-delta
251250
0032have 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
252-
0000
253251
0009done
252+
0000
254253
----
255254

256255
====== HTTP(S)
@@ -262,7 +261,7 @@ $ ssh -x git@server "git-upload-pack 'simplegit-progit.git'"
262261
----
263262
=> GET $GIT_URL/info/refs?service=git-upload-pack
264263
001e# service=git-upload-pack
265-
000000e7ca82a6dff817ec66f44342007202690a93763949 HEADmulti_ack thin-pack \
264+
00e7ca82a6dff817ec66f44342007202690a93763949 HEAD multi_ack thin-pack \
266265
side-band side-band-64k ofs-delta shallow no-progress include-tag \
267266
multi_ack_detailed no-done symref=HEAD:refs/heads/master \
268267
agent=git/2:2.1.1+github-607-gfba4028

0 commit comments

Comments
 (0)