Skip to content

Commit 1840a71

Browse files
committed
Sync 03-git-branching nutshell
1 parent 1b20e36 commit 1840a71

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

book/03-git-branching/sections/nutshell.asc

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
[source,console]
1515
----
1616
$ git add README test.rb LICENSE
17-
$ git commit -m 'initial commit of my project'
17+
$ git commit -m 'The initial commit of my project'
1818
----
1919

2020
当使用 `git commit` 进行提交操作时,Git 会先计算每一个子目录(本例中只有项目根目录)的校验和,然后在 Git 仓库中这些校验和保存为树对象。
@@ -30,10 +30,9 @@ image::images/commit-and-tree.png[首次提交对象及其树结构.]
3030
.提交对象及其父对象
3131
image::images/commits-and-parents.png[提交对象及其父对象.]
3232

33-
说完了 Git 保存数据的方式,现在让我们谈回分支。
3433
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。
3534
Git 的默认分支名字是 `master`。
36-
在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。
35+
在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 `master` 分支。
3736
它会在每次的提交操作中自动向前移动。
3837

3938
[NOTE]
@@ -52,7 +51,8 @@ image::images/branch-and-history.png[分支及其提交历史.]
5251
(((branches, creating)))
5352
Git 是怎么创建新分支的呢?
5453
很简单,它只是为你创建了一个可以移动的新的指针。
55-
比如,创建一个 testing 分支,需要使用 `git branch` 命令:(((git commands, branch)))
54+
比如,创建一个 testing 分支,
55+
你需要使用 `git branch` 命令:(((git commands, branch)))
5656

5757
[source,console]
5858
----
@@ -62,19 +62,20 @@ $ git branch testing
6262
这会在当前所在的提交对象上创建一个指针。
6363

6464
.两个指向相同提交历史的分支
65-
image::images/two-branches.png[两个指向相同提交历史的分支.]
65+
image::images/two-branches.png[两个指向相同提交历史的分支]
6666

6767
那么,Git 又是怎么知道当前在哪一个分支上呢?
6868
也很简单,它有一个名为 `HEAD` 的特殊指针。
6969
请注意它和许多其它版本控制系统(如 Subversion 或 CVS)里的 `HEAD` 概念完全不同。
7070
在 Git 中,它是一个指针,指向当前所在的本地分支(译注:将 `HEAD` 想象为当前分支的别名)。
71-
在本例中,你仍然在 master 分支上。
71+
在本例中,你仍然在 `master` 分支上。
7272
因为 `git branch` 命令仅仅 _创建_ 一个新分支,并不会自动切换到新分支中去。
7373

7474
.HEAD 指向当前所在的分支
7575
image::images/head-to-master.png[HEAD 指向当前所在的分支.]
7676

77-
你可以简单地使用 `git log` 命令查看各个分支当前所指的对象。提供这一功能的参数是 `--decorate`。
77+
你可以简单地使用 `git log` 命令查看各个分支当前所指的对象。
78+
提供这一功能的参数是 `--decorate`。
7879

7980
[source,console]
8081
----
@@ -91,7 +92,7 @@ f30ab (HEAD, master, testing) add feature #32 - ability to add new
9192

9293
(((branches, switching)))
9394
要切换到一个已存在的分支,你需要使用 `git checkout` 命令。(((git commands, checkout)))
94-
我们现在切换到新创建的 testing 分支去:
95+
我们现在切换到新创建的 `testing` 分支去:
9596

9697
[source,console]
9798
----
@@ -115,8 +116,8 @@ $ git commit -a -m 'made a change'
115116
.HEAD 分支随着提交操作自动向前移动
116117
image::images/advance-testing.png[HEAD 分支随着提交操作自动向前移动.]
117118

118-
如图所示,你的 testing 分支向前移动了,但是 master 分支却没有,它仍然指向运行 `git checkout` 时所指的对象。
119-
这就有意思了,现在我们切换回 master 分支看看:
119+
如图所示,你的 `testing` 分支向前移动了,但是 `master` 分支却没有,它仍然指向运行 `git checkout` 时所指的对象。
120+
这就有意思了,现在我们切换回 `master` 分支看看:
120121

121122
[source,console]
122123
----
@@ -127,9 +128,9 @@ $ git checkout master
127128
image::images/checkout-master.png[检出时 HEAD 随之移动.]
128129

129130
这条命令做了两件事。
130-
一是使 HEAD 指回 master 分支,二是将工作目录恢复成 master 分支所指向的快照内容。
131+
一是使 HEAD 指回 `master` 分支,二是将工作目录恢复成 `master` 分支所指向的快照内容。
131132
也就是说,你现在做修改的话,项目将始于一个较旧的版本。
132-
本质上来讲,这就是忽略 testing 分支所做的修改,以便于向另一个方向进行开发。
133+
本质上来讲,这就是忽略 `testing` 分支所做的修改,以便于向另一个方向进行开发。
133134

134135
[NOTE]
135136
.分支切换会改变你工作目录中的文件

0 commit comments

Comments
 (0)