Permalink
Browse files

[zh] Corrections of Chapter 2

  • Loading branch information...
iissnan committed Mar 1, 2013
1 parent dbd307f commit 7bfcc2cb874bddb9247abaa146d205880b93b405
Showing with 19 additions and 19 deletions.
  1. +19 −19 zh/02-git-basics/01-chapter2.markdown
@@ -14,7 +14,7 @@
初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。(在第九章我们会详细说明刚才创建的 `.git` 目录中究竟有哪些文件,以及都起些什么作用。)
-如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
+如果当前目录下有几个文件想要纳入版本控制,需要先用 `git add` 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
@@ -24,17 +24,17 @@
### 从现有仓库克隆 ###
-如果想对某个开源项目出一份力,可以先把该项目的 Git 仓库复制一份出来,这就需要用到 git clone 命令。如果你熟悉其他的 VCS 比如 Subversion,你可能已经注意到这里使用的是 clone 而不是 checkout。这是个非常重要的差别,Git 收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态(虽然可能会丢失某些服务器端的挂钩设置,但所有版本的数据仍旧还在,有关细节请参考第四章)。
+如果想对某个开源项目出一份力,可以先把该项目的 Git 仓库复制一份出来,这就需要用到 `git clone` 命令。如果你熟悉其他的 VCS 比如 Subversion,你可能已经注意到这里使用的是 `clone` 而不是 `checkout`。这是个非常重要的差别,Git 收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态(虽然可能会丢失某些服务器端的挂钩设置,但所有版本的数据仍旧还在,有关细节请参考第四章)。
克隆仓库的命令格式为 `git clone [url]`。比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
$ git clone git://github.com/schacon/grit.git
-这会在当前目录下创建一个名为grit的目录,其中包含一个 `.git` 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 `grit` 目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
+这会在当前目录下创建一个名为`grit`的目录,其中包含一个 `.git` 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 `grit` 目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
-唯一的差别就是,现在新建的目录成了 mygrit,其他的都和上边的一样。
+唯一的差别就是,现在新建的目录成了 `mygrit`,其他的都和上边的一样。
Git 支持许多数据传输协议。之前的例子使用的是 `git://` 协议,不过你也可以用 `http(s)://` 或者 `user@server:/path.git` 表示的 SSH 传输协议。我们会在第四章详细介绍所有这些协议在服务器端该如何配置使用,以及各种方式之间的利弊。
@@ -51,15 +51,15 @@ Insert 18333fig0201.png
### 检查当前文件状态 ###
-要确定哪些文件当前处于什么状态,可以用 git status 命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:
+要确定哪些文件当前处于什么状态,可以用 `git status` 命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:
$ git status
# On branch master
nothing to commit (working directory clean)
-这说明你现在的工作目录相当干净。换句话说,当前没有任何跟踪着的文件,也没有任何文件在上次提交后更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 master,这是默认的分支名称,实际是可以修改的,现在先不用考虑。下一章我们就会详细讨论分支和引用。
+这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 `master`,这是默认的分支名称,实际是可以修改的,现在先不用考虑。下一章我们就会详细讨论分支和引用。
-现在让我们用 vim 编辑一个新文件 README,保存退出后运行 `git status` 会看到该文件出现在未跟踪文件列表中:
+现在让我们用 vim 创建一个新文件 README,保存退出后运行 `git status` 会看到该文件出现在未跟踪文件列表中:
$ vim README
$ git status
@@ -70,7 +70,7 @@ Insert 18333fig0201.png
# README
nothing added to commit but untracked files present (use "git add" to track)
-就是在“Untracked files”这行下面。Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。不过现在的例子中,我们确实想要跟踪管理 README 这个文件。
+在状态报告中可以看到新建的`README`文件出现在“Untracked files”下面。未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。不过现在的例子中,我们确实想要跟踪管理 README 这个文件。
### 跟踪新文件 ###
@@ -107,7 +107,7 @@ Insert 18333fig0201.png
# modified: benchmarks.rb
#
-文件 benchmarks.rb 出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 `git add` 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。现在让我们运行 `git add` 将 benchmarks.rb 放到暂存区,然后再看看 `git status` 的输出:
+文件 `benchmarks.rb` 出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 `git add` 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。现在让我们运行 `git add` 将 benchmarks.rb 放到暂存区,然后再看看 `git status` 的输出:
$ git add benchmarks.rb
$ git status
@@ -119,7 +119,7 @@ Insert 18333fig0201.png
# modified: benchmarks.rb
#
-现在两个文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在 benchmarks.rb 里再加条注释,重新编辑存盘后,准备好提交。不过且慢,再运行 `git status` 看看:
+现在两个文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在 `benchmarks.rb` 里再加条注释,重新编辑存盘后,准备好提交。不过且慢,再运行 `git status` 看看:
$ vim benchmarks.rb
$ git status
@@ -136,7 +136,7 @@ Insert 18333fig0201.png
# modified: benchmarks.rb
#
-怎么回事?benchmarks.rb 文件出现了两次!一次算未暂存,一次算已暂存,这怎么可能呢?好吧,实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了 `git add` 之后又作了修订的文件,需要重新运行 `git add` 把最新版本重新暂存起来:
+怎么回事? `benchmarks.rb` 文件出现了两次!一次算未暂存,一次算已暂存,这怎么可能呢?好吧,实际上 Git 只不过暂存了你运行 `git add` 命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了 `git add` 之后又作了修订的文件,需要重新运行 `git add` 把最新版本重新暂存起来:
$ git add benchmarks.rb
$ git status
@@ -150,24 +150,24 @@ Insert 18333fig0201.png
### 忽略某些文件 ###
-一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:
+一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 `.gitignore` 的文件,列出要忽略的文件模式。来看一个实际的例子:
$ cat .gitignore
*.[oa]
*~
-第一行告诉 Git 忽略所有以 .o.a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(`~`)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 logtmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。
+第一行告诉 Git 忽略所有以 `.o``.a` 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(`~`)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 `log`,`tmp` 或者 `pid` 目录,以及自动生成的文档等等。要养成一开始就设置好 `.gitignore` 文件的习惯,以免将来误提交这类无用的文件。
-文件 .gitignore 的格式规范如下:
+文件 `.gitignore` 的格式规范如下:
-* 所有空行或者以注释符号 开头的行都会被 Git 忽略。
+* 所有空行或者以注释符号 `#` 开头的行都会被 Git 忽略。
* 可以使用标准的 glob 模式匹配。
* 匹配模式最后跟反斜杠(`/`)说明要忽略的是目录。
* 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(`!`)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(`*`)匹配零个或多个任意字符;`[abc]` 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(`?`)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 `[0-9]` 表示匹配所有 0 到 9 的数字)。
-我们再看一个 .gitignore 文件的例子:
+我们再看一个 `.gitignore` 文件的例子:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
@@ -180,7 +180,7 @@ Insert 18333fig0201.png
实际上 `git status` 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 `git diff` 命令。稍后我们会详细介绍 `git diff`,不过现在,它已经能回答我们的两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? `git diff` 会使用文件补丁的格式显示具体添加和删除的行。
-假如再次修改 README 文件后暂存,然后编辑 benchmarks.rb 文件后先别暂存,运行 `status` 命令,会看到
+假如再次修改 `README` 文件后暂存,然后编辑 `benchmarks.rb` 文件后先别暂存,运行 `status` 命令将会看到
$ git status
# On branch master
@@ -749,7 +749,7 @@ Insert 18333fig0202.png
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.git
-现在可以用字串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 `git fetch pb`
+现在可以用字符串 `pb` 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 `git fetch pb`
$ git fetch pb
remote: Counting objects: 58, done.
@@ -825,7 +825,7 @@ Insert 18333fig0202.png
### 远程仓库的删除和重命名 ###
-在新版 Git 中可以用 `git remote rename` 命令修改某个远程仓库在本地的简短名称,比如想把 `pb` 改成 `paul`,可以这么运行:
+在新版 Git 中可以用 `git remote rename` 命令修改某个远程仓库在本地的简称,比如想把 `pb` 改成 `paul`,可以这么运行:
$ git remote rename pb paul
$ git remote

0 comments on commit 7bfcc2c

Please sign in to comment.