1
0

Indent with two spaces in zh files

converted tabs to spaces also. but these commits is limited in the zh
version.

the reason I did this:

 - long lines is prone to conflict
 - the use of tab disturbs the indentation when switching editors
   without proper tab space setting, which you may never get it right.
   so why not give up and use spaces instead.

those changes is limited to the zh translation.

Merge remote-tracking branch 'upstream/gh-pages' into gh-pages

Conflicts:
	.gitignore
	_layouts/zh_reference.html
	zh/basic/index.html
	zh/branching/index.html
	zh/creating/index.html
	zh/index.html
	zh/inspect/index.html
	zh/remotes/index.html
This commit is contained in:
dotnil
2012-11-29 20:16:37 +08:00
25 changed files with 1281 additions and 886 deletions

View File

@@ -11,11 +11,14 @@ layout: zh_reference
</h2>
<div class="block">
<p>
现在你有了一堆分支,短期的主题、长期的特性或者其它。怎样追踪他们呢?Git 有一组工具,可以帮助你弄明白工作是在哪儿完成的,两个分支间的区别是啥,等等。
现在你有了一堆分支,短期的主题、长期的特性或者其它。怎样追踪他们呢?
Git 有一组工具,可以帮助你弄明白工作是在哪儿完成的,两个分支间的区别是啥,等等。
</p>
<p class="nutshell">
<b>一言以蔽</b> 执行 <code>git log</code> 找到你的项目历史中的特定提交 —— 按作者、日期、内容或者历史记录。执行 <code>git diff</code> 比较历史记录中的两个不同的点 —— 通常是为了看看两个分支有啥区别,或者从某个版本到另一个版本,你的软件都有啥变化。
<b>简而言</b> 执行 <code>git log</code> 找到你的项目历史中的特定提交 ——
按作者、日期、内容或者历史记录。执行 <code>git diff</code> 比较历史记录中的两个不同的点 ——
通常是为了看看两个分支有啥区别,或者从某个版本到另一个版本,你的软件都有啥变化。
</p>
</div>
</div>
@@ -31,8 +34,12 @@ layout: zh_reference
</h2>
<div class="block">
<p>
通过查看分支中另一分支看不到的提交记录,我们已经看到如何用 <code>git log</code> 来比较分支。(如果你不记得了,它看起来是这样的:<code>git log branchA ^branchB</code>)。而且,你也可以用 <code>git log</code> 去寻找特定的提交。在此,我们会看到一些更广为使用的 <code>git log</code> 选项,不过哪有很多。完整的清单可以看看官方文档。
<p>
通过查看分支中另一分支看不到的提交记录,我们已经看到如何用 <code>git log</code> 来比较分支。
(如果你不记得了,它看起来是这样的:<code>git log branchA ^branchB</code>)。
而且,你也可以用 <code>git log</code> 去寻找特定的提交。
在此,我们会看到一些更广为使用的 <code>git log</code> 选项,不过哪有很多。
完整的清单可以看看官方文档。
</p>
<h4>
@@ -41,7 +48,11 @@ layout: zh_reference
</h4>
<p>
要过滤你的提交历史,只寻找某个特定作者的提交,你可以使用 <code>--author</code> 选项。例如,比方说我们要找 Git 源码中 Linus 提交的部分。我们可以执行类似 <code>git log --author=Linus</code> 的命令。这个查找是大小写敏感的,并且也会检索电子邮箱地址。我在此例中使用 <code>-[number]</code> 选项,以限制结果为最近 [number] 次的提交。
要过滤你的提交历史,只寻找某个特定作者的提交,你可以使用 <code>--author</code> 选项。
例如,比方说我们要找 Git 源码中 Linus 提交的部分。
我们可以执行类似 <code>git log --author=Linus</code> 的命令。
这个查找是大小写敏感的,并且也会检索电子邮箱地址。
我在此例中使用 <code>-[number]</code> 选项,以限制结果为最近 [number] 次的提交。
</p>
<pre>
@@ -59,7 +70,9 @@ b532581 make "git unpack-file" a built-in
</h4>
<p>
如果你要指定一个你感兴趣的日期范围以过滤你的提交,可以执行几个选项 —— 我用 <code>--since</code><code>--before</code>,但是你也可以用 <code>--until</code><code>--after</code>。例如,如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 <code>--no-merges</code> 选项以隐藏合并提交):
如果你要指定一个你感兴趣的日期范围以过滤你的提交,可以执行几个选项 ——
我用 <code>--since</code><code>--before</code>,但是你也可以用 <code>--until</code><code>--after</code>
例如,如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 <code>--no-merges</code> 选项以隐藏合并提交):
</p>
<pre>
@@ -81,7 +94,8 @@ b6c8d2d Documentation/remote-helpers: Add invocation section
</h4>
<p>
你或许还想根据提交注释中的某个特定短语查找提交记录。可以用 <code>--grep</code> 选项。比如说我知道有个提交是有关使用 P4EDITOR 环境变量,又想回忆起那个改动是啥样子的 —— 我可以用 <code>--grep</code> 选项找到该提交。
你或许还想根据提交注释中的某个特定短语查找提交记录。可以用 <code>--grep</code> 选项。
比如说我知道有个提交是有关使用 P4EDITOR 环境变量,又想回忆起那个改动是啥样子的 —— 我可以用 <code>--grep</code> 选项找到该提交。
</p>
<pre>
@@ -101,12 +115,15 @@ Date: Wed Mar 12 19:03:24 2008 -0500
</pre>
<p>
Git 会对所有的 <code>--grep</code><code>--author</code> 参数作逻辑或。如果你用 <code>--grep</code><code>--author</code> 时,想看的是某人写作的并且有某个特殊的注释内容的提交记录,你需要加上 <code>--all-match</code> 选项。在这些例子中,我会用上 <code>--format</code> 选项,这样我们就可以看到每个提交的作者是谁了。
Git 会对所有的 <code>--grep</code><code>--author</code> 参数作逻辑或。
如果你用 <code>--grep</code><code>--author</code> 时,想看的是某人写作的并且有某个特殊的注释内容的提交记录,
你需要加上 <code>--all-match</code> 选项。
在这些例子中,我会用上 <code>--format</code> 选项,这样我们就可以看到每个提交的作者是谁了。
</p>
<p>
如果我查找注释内容含有 “p4 depo”的提交我得到了三个提交
</p>
<p>
如果我查找注释内容含有 “p4 depo”的提交我得到了三个提交
</p>
<pre>
<b>$ git log --grep="p4 depo" --format="%h %an %s"</b>
@@ -115,9 +132,10 @@ da4a660 Benjamin Sergeant git-p4 fails when cloning a p4 depo.
1cd5738 Simon Hausmann Make incremental imports easier to use by storing the p4 d
</pre>
<p>
如果我加上 <code>--author=Hausmann</code> 参数,与进一步过滤上述结果到 Simon 的唯一提交相反,它会告诉我所有 Simon 的提交或者注释中有“p4 demo”的提交
</p>
<p>
如果我加上 <code>--author=Hausmann</code> 参数,与进一步过滤上述结果到 Simon 的唯一提交相反,
它会告诉我所有 Simon 的提交或者注释中有“p4 demo”的提交
</p>
<pre>
<b>$ git log --grep="p4 depo" --format="%h %an %s" --author="Hausmann"</b>
@@ -136,8 +154,8 @@ e96e400 Simon Hausmann git-p4: Fix submit user-interface.
...
</pre>
<p>
不过,如果加上 <code>--all-match</code>,结果就是我想要的了:
<p>
不过,如果加上 <code>--all-match</code>,结果就是我想要的了:
</p>
<pre>
@@ -150,8 +168,11 @@ e96e400 Simon Hausmann git-p4: Fix submit user-interface.
<small>依据所引入的差值过滤</small>
</h4>
<p>
如果你写的提交注释都极度糟糕怎么办?或者,如果你要找某个函数是何时引入的,某些变量是在哪里开始被使用的?你可以告诉 Git 在每个提交之间的差值中查找特定字符串。例如如果我们想要找出哪个提交修改出了类似函数名“userformat_find_requirements”我们可以执行注意在“-S”与你要找的东东之间没有“=”):
<p>
如果你写的提交注释都极度糟糕怎么办?或者,如果你要找某个函数是何时引入的,某些变量是在哪里开始被使用的?
你可以告诉 Git 在每个提交之间的差值中查找特定字符串。
例如如果我们想要找出哪个提交修改出了类似函数名“userformat_find_requirements”
我们可以执行(注意在“-S”与你要找的东东之间没有“=”):
</p>
<pre>
@@ -180,7 +201,10 @@ Date: Tue Apr 13 22:31:12 2010 +0200
</h4>
<p>
每个提交都是项目的一个快照。由于每个提交都记录它所基于的快照Git 能够经常对它们求差值,并以补丁形式向你展示。这意味着,对任意提交,你都可以获取该提交给项目引入补丁。你可以用 <code>git show [SHA]</code> 加上某个特定的提交 SHA 获取,或者执行 <code>git log -p</code>,它会告诉 Git 输出每个提交之后的补丁。这是个总结某一分支或者两个提交之间都发生了神马的好途径。
每个提交都是项目的一个快照。由于每个提交都记录它所基于的快照Git 能够经常对它们求差值,并以补丁形式向你展示。
这意味着,对任意提交,你都可以获取该提交给项目引入补丁。
你可以用 <code>git show [SHA]</code> 加上某个特定的提交 SHA 获取,或者执行 <code>git log -p</code>
它会告诉 Git 输出每个提交之后的补丁。这是个总结某一分支或者两个提交之间都发生了神马的好途径。
</p>
<pre>
@@ -224,8 +248,8 @@ index d053cc8..9103e27 100644
This project has examples of hello world in
</pre>
<p>
这是个总结改动,以及合并或发布之前重审一系列提交的好方式。
<p>
这是个总结改动,以及合并或发布之前重审一系列提交的好方式。
</p>
<h4>
@@ -233,9 +257,10 @@ index d053cc8..9103e27 100644
<small>显示每个提交引入的改动的差值统计</small>
</h4>
<p>
如果 <code>-p</code> 选项对你来说太详细了,你可以用 <code>--stat</code> 总结这些改动。这是不用 <code>-p</code>,而用 <code>--stat</code> 选项时,同一份日志的输出。
</p>
<p>
如果 <code>-p</code> 选项对你来说太详细了,你可以用 <code>--stat</code> 总结这些改动。
这是不用 <code>-p</code>,而用 <code>--stat</code> 选项时,同一份日志的输出。
</p>
<pre>
<b>$ git log --stat --no-merges -2</b>
@@ -258,8 +283,8 @@ Date: Fri Jun 4 12:58:53 2010 +0200
1 files changed, 1 insertions(+), 1 deletions(-)
</pre>
<p>
同样的基本信息,但更紧凑 —— 它仍然让你看到相对改动,和改动了哪些文件。
<p>
同样的基本信息,但更紧凑 —— 它仍然让你看到相对改动,和改动了哪些文件。
</p>
</div>
@@ -277,12 +302,14 @@ Date: Fri Jun 4 12:58:53 2010 +0200
<div class="block">
<p>
最后,要查看两个提交快照的绝对改动,你可以用 <code>git diff</code> 命令。这在两个主要情况中广为使用 —— 查看两个分支彼此之间的差值,和查看自发布或者某个旧历史点之后都有啥变了。让我们看看这俩情况。
<p>
最后,要查看两个提交快照的绝对改动,你可以用 <code>git diff</code> 命令。
这在两个主要情况中广为使用 —— 查看两个分支彼此之间的差值,和查看自发布或者某个旧历史点之后都有啥变了。让我们看看这俩情况。
</p>
<p>
你仅需执行 <code>git diff [version]</code>(或者你给该发布打的任何标签)就可以查看自最近发布之后的改动。例如,如果我们想要看看自 v0.9 发布之后我们的项目改变了啥,我们可以执行 <code>git diff v0.9</code>
<p>
你仅需执行 <code>git diff [version]</code>(或者你给该发布打的任何标签)就可以查看自最近发布之后的改动。
例如,如果我们想要看看自 v0.9 发布之后我们的项目改变了啥,我们可以执行 <code>git diff v0.9</code>
</p>
<pre>
@@ -313,8 +340,8 @@ index bb86f00..192151c 100644
<span class="green">+HelloWorld.hello</span>
</pre>
<p>
正如 <code>git log</code>,你可以给它加上 <code>--stat</code> 参数。
<p>
正如 <code>git log</code>,你可以给它加上 <code>--stat</code> 参数。
</p>
<pre>
@@ -324,9 +351,13 @@ index bb86f00..192151c 100644
2 files changed, 3 insertions(+), 3 deletions(-)
</pre>
<p>
要比较两个不同的分支,你可以执行类似 <code>git diff branchA branchB</code> 的命令。不过它的问题在于它会完完全全按你说的作 —— 它会直接给你个补丁文件,该补丁能够将甲分支的最新快照变成乙分支的最新快照的样子。这意味着如果两个分支已经产生分歧 —— 奔往两个不同方向了 —— 它会移除甲分支中引入的所有工作,然后累加乙分支中的所有工作。这大概不是你要的吧 —— 你想要不在甲分支中的乙分支的改动。所以你真的需要的是两个分支叉开去时,和最新的乙分支的差别。所以,如果我们的历史记录看起来像这样:
</p>
<p>
要比较两个不同的分支,你可以执行类似 <code>git diff branchA branchB</code> 的命令。
不过它的问题在于它会完完全全按你说的作 —— 它会直接给你个补丁文件,该补丁能够将甲分支的最新快照变成乙分支的最新快照的样子。
这意味着如果两个分支已经产生分歧 —— 奔往两个不同方向了 —— 它会移除甲分支中引入的所有工作,然后累加乙分支中的所有工作。
这大概不是你要的吧 —— 你想要不在甲分支中的乙分支的改动。所以你真的需要的是两个分支叉开去时,和最新的乙分支的差别。
所以,如果我们的历史记录看起来像这样:
</p>
<pre>
<b>$ git log --graph --oneline --decorate --all</b>
@@ -338,9 +369,9 @@ index bb86f00..192151c 100644
...
</pre>
<p>
并且我们想要看“erlang”分支与主分支相比的查别。执行 <code>git diff master erlang</code> 会给我们错误的结果。
</p>
<p>
并且我们想要看“erlang”分支与主分支相比的查别。执行 <code>git diff master erlang</code> 会给我们错误的结果。
</p>
<pre>
<b>$ git diff --stat master erlang</b>
@@ -350,8 +381,10 @@ index bb86f00..192151c 100644
3 files changed, 11 insertions(+), 2 deletions(-)
</pre>
<p>
你可以看到,它加上了 erlang 和 haskell 文件,这确实是我们在该分支中做的,但是它同时恢复了我们在主分支中改动的 ruby 文件。我们真心想要的只是“erlang”分支中的改动添加两个文件。我们可以通过求两个分支分歧时的共同提交与该分支的差值得到想要的结果
<p>
你可以看到,它加上了 erlang 和 haskell 文件,这确实是我们在该分支中做的,
但是它同时恢复了我们在主分支中改动的 ruby 文件。我们真心想要的只是“erlang”分支中的改动添加两个文件
我们可以通过求两个分支分歧时的共同提交与该分支的差值得到想要的结果:
</p>
<pre>
@@ -361,8 +394,11 @@ index bb86f00..192151c 100644
2 files changed, 9 insertions(+), 0 deletions(-)
</pre>
<p>
这才是我们在找的,但是我们可不想要每次都要找出两个分支分歧时的那次提交。幸运的是Git 为此提供了一个快捷方式。如果你执行 <code>git diff master...erlang</code>在分支名之间有三个半角的点Git 就会自动找出两个分支的共同提交(也被成为合并基础),并求差值。
<p>
这才是我们在找的,但是我们可不想要每次都要找出两个分支分歧时的那次提交。
幸运的是Git 为此提供了一个快捷方式。
如果你执行 <code>git diff master...erlang</code>(在分支名之间有三个半角的点),
Git 就会自动找出两个分支的共同提交(也被成为合并基础),并求差值。
</p>
<pre>
@@ -377,21 +413,21 @@ index bb86f00..192151c 100644
2 files changed, 9 insertions(+), 0 deletions(-)
</pre>
<p>
几乎每一次你要对比两个分支的时候,你都会想用三个点的语法,因为它通常会给你你想要的。
<p>
几乎每一次你要对比两个分支的时候,你都会想用三个点的语法,因为它通常会给你你想要的。
</p>
<p>
顺带提一句,你还可以让 Git 手工计算两次提交的合并基础(第一个共同的祖提交),即 <code>git merge-base</code> 命令:
</p>
<p>
顺带提一句,你还可以让 Git 手工计算两次提交的合并基础(第一个共同的祖提交),即 <code>git merge-base</code> 命令:
</p>
<pre>
<b>$ git merge-base master erlang</b>
8d585ea6faf99facd39b55d6f6a3b3f481ad0d3d
</pre>
<p>
所以你执行下面这个也跟 <code>git diff master...erlang</code> 一样:
<p>
所以你执行下面这个也跟 <code>git diff master...erlang</code> 一样:
</p>
<pre>
@@ -405,7 +441,8 @@ index bb86f00..192151c 100644
<p class="nutshell">
<b>一言以蔽</b> 使用 <code>git diff</code> 查看某一分支自它偏离出来起与过去某一点之间项目的改动。总是使用 <code>git diff branchA...branchB</code> 来查看 branchB 与 branchA 的相对差值,这会让事情简单点。
<b>简而言</b> 使用 <code>git diff</code> 查看某一分支自它偏离出来起与过去某一点之间项目的改动。
总是使用 <code>git diff branchA...branchB</code> 来查看 branchB 与 branchA 的相对差值,这会让事情简单点。
</p>
</div>