Skip to content

Commit f4dd556

Browse files
asforkOlingCat
authored andcommitted
reviewed debugging.asc
1 parent 5ec3a1f commit f4dd556

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

book/07-git-tools/sections/debugging.asc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
=== 使用 Git 调试
22

33
Git 也提供了两个工具来辅助你调试项目中的问题。
4-
由于 Git 被设计成适用于几乎所有类型的项目,这些工具是比较通用的,但它们可以在出现问题的时候帮助你找到 bug 或者错误
4+
由于 Git 被设计成适用于几乎所有类型的项目,这两个工具相当通用,但它们往往可以在出现问题时帮助你找到 bug 或者原因
55

66
[[r_file_annotation]]
77
==== 文件标注
88

99
如果你在追踪代码中的一个 bug,并且想知道是什么时候以及为何会引入,文件标注通常是最好用的工具。
10-
它展示了文件中每一行最后一次修改的提交
11-
所以,如果你在代码中看到一个有问题的方法,你可以使用 `git blame` 标注这个文件,查看这个方法每一行的最后修改时间以及是被谁修改的
12-
这个例子使用 `-L` 选项来限制输出范围在第12至22行:
10+
它能显示任何文件中每行最后一次修改的提交记录
11+
所以,如果你在代码中看到一个有问题的方法,你可以使用 `git blame` 标注这个文件,查看这个方法每一行的最后修改时间以及作者
12+
下面这个例子使用 `-L` 选项来限制输出范围在第12至22行:
1313

1414
[source,console]
1515
----
@@ -28,11 +28,11 @@ $ git blame -L 12,22 simplegit.rb
2828
----
2929

3030
请注意,第一个字段是最后一次修改该行的提交的部分 SHA-1 值。
31-
接下来两个字段的值是从提交中提取出来的——作者的名字以及提交的时间——所以你就可以很轻易地找到是谁在什么时候修改了那一行
31+
接下来两个字段的值是从提交中提取出来的——作者的名字以及提交的时间——所以你就可以很轻易地知道是谁在什么时候修改了那一行
3232
接下来就是行号和文件内容。
33-
注意一下 `^4832fe2` 这个提交的那些行,这些指的是这个文件第一次提交的那些行
34-
这个提交是这个文件第一次加入到这个项目时的提交,并且这些行从未被修改过。
35-
这会带来小小的困惑,因为你已经至少看到三种 Git 使用 `^` 来修饰一个提交的 SHA-1 值的不同含义,但这里确实就是这个意思。
33+
注意一下 `^4832fe2` 这个提交的几行,它们指的是这个文件第一次提交时的那些行
34+
这个提交是此文件第一次加入到这个项目时的提交,并且这些行从未被修改过。
35+
这会带来小小的困惑,因为目前你至少已经看到三种 Git 使用 `^` 来修饰一个提交的 SHA-1 值的不同含义,但这里确实就是这个意思。
3636

3737
另一件比较酷的事情是 Git 不会显式地记录文件的重命名。
3838
它会记录快照,然后在事后尝试计算出重命名的动作。
@@ -74,7 +74,7 @@ ad11ac80 GITPackUpload.m (Scott 2009-03-24 150)
7474
你重新查看了你的代码,发现这个问题是可以被重现的,但是你不知道哪里出了问题。
7575
你可以用二分法来找到这个问题。
7676
首先执行 `git bisect start` 来启动,接着执行 `git bisect bad` 来告诉系统当前你所在的提交是有问题的。
77-
然后你必须告诉 bisect 已知的最后一次正常状态是哪次提交,使用 `git bisect good [good_commit]`:
77+
然后你必须使用 `git bisect good [good_commit]`,告诉 bisect 已知的最后一次正常状态是哪次提交
7878

7979
[source,console]
8080
----
@@ -108,7 +108,7 @@ Bisecting: 1 revisions left to test after this
108108
----
109109

110110
这个提交是正常的,现在 Git 拥有的信息已经可以确定引入问题的位置在哪里。
111-
它会告诉你第一个错误提交的 SHA-1 值并显示一些提交说明,以及哪些文件在那次提交里修改过,这样你可以找出引入 bug 的根源:
111+
它会告诉你第一个错误提交的 SHA-1 值并显示一些提交说明,以及哪些文件在那次提交里被修改过,这样你可以找出引入 bug 的根源:
112112

113113
[source,console]
114114
----
@@ -124,7 +124,7 @@ Date: Tue Jan 27 14:48:32 2009 -0800
124124
f24d3c6ebcfc639b1a3814550e62d60b8e68a8e4 M config
125125
----
126126

127-
当你完成这些操作之后,你应该执行 `git bisect reset` 重置你的 HEAD 指针到最开始的位置,否则你会停留在一个很奇怪的状态
127+
当你完成这些操作之后,你应该执行 `git bisect reset` 重置你的 HEAD 指针到最开始的位置,否则你会停留在一个奇怪的状态
128128

129129
[source,console]
130130
----
@@ -142,5 +142,5 @@ $ git bisect start HEAD v1.0
142142
$ git bisect run test-error.sh
143143
----
144144

145-
Git 会自动在每个被检出的提交里执行 `test-error.sh` 直到找到第一个项目不正常的提交
145+
Git 会自动在每个被检出的提交里执行 `test-error.sh`,直到找到项目第一个不正常的提交
146146
你也可以执行 `make` 或者 `make tests` 或者其他东西来进行自动化测试。

0 commit comments

Comments
 (0)