1
0
This commit is contained in:
CzBiX 2012-02-19 23:17:00 +08:00
parent e1d7000be0
commit 5d4495f013
6 changed files with 36 additions and 36 deletions

View File

@ -7,19 +7,19 @@ layout: zh_reference
<span class="docs"> <span class="docs">
<a target="new" href="http://progit.org/book/ch2-2.html"></a> <a target="new" href="http://progit.org/book/ch2-2.html"></a>
</span> </span>
基本快照 基本快照
</h2> </h2>
<div class="block"> <div class="block">
<p> <p>
Git 的所有工作就是创建与保存您的项目的快照以及之后的快照对比等工作。本章将对有关创建与提交您的项目的快照的命令作介绍。 Git 的工作就是创建和保存您的项目的快照并和之后的快照进行对比。本章将对有关创建与提交您的项目的快照的命令作介绍。
</p> </p>
<p> <p>
这里有个重要的概念Git 有一个叫做“索引”的东东,有点像是您的快照的缓存区。这就使您能够从更改的文件中创建出一系列组织良好的快照,而不是一次提交所有的更改。 这里有个重要的概念Git 有一个叫做“索引”的东东,有点像是您的快照的缓存区。这使得Git能够很方便的从更改的文件中创建出一系列的快照,而不是一次提交所有的更改。
</p> </p>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,使用 <code>git add</code> 添加需要追踪的新文件和待提交的更改,然后使用 <code>git status</code><code>git diff</code> 查看有何改动,最后用 <code>git commit</code> 将您的快照记录。这就是您要用的基本流程,绝大部分时候都是这样的。 <strong>简而言</strong>,使用 <code>git add</code> 添加需要追踪的新文件和待提交的更改,然后使用 <code>git status</code><code>git diff</code> 查看有何改动,最后用 <code>git commit</code> 将您的快照记录。这就是您要用的基本流程,绝大部分时候都是这样的。
</p> </p>
</div> </div>
@ -37,7 +37,7 @@ layout: zh_reference
<div class="block"> <div class="block">
<p> <p>
在 Git 中,在提交您修改的文件之前,您需要把它们添加到缓存。如果该文件是新的,您可以执行 <code>git add</code> 将该文件添加到缓存,但是,即使该文件已经被追踪了 —— 也就是说,曾经提交过了 —— 你仍然需要执行 <cpde>git add</code> 将新更改的文件添加到缓存去。让我们看几个例子: 在 Git 中,在提交您修改的文件之前,您需要把它们添加到缓存。如果该文件是新创建的,您可以执行 <code>git add</code> 将该文件添加到缓存,但是,即使该文件已经被追踪了 —— 也就是说,曾经提交过了 —— 你仍然需要执行 <cpde>git add</code> 将新更改的文件添加到缓存去。让我们看几个例子:
</p> </p>
<p>回到我们的 Hello World 示例,初始化该项目之后,我们就要用 <code>git add</code> 将我们的文件添加进去了。我们可以用 <code>git status</code> 看看我们的项目的当前状态。 <p>回到我们的 Hello World 示例,初始化该项目之后,我们就要用 <code>git add</code> 将我们的文件添加进去了。我们可以用 <code>git status</code> 看看我们的项目的当前状态。
@ -76,12 +76,12 @@ layout: zh_reference
</pre> </pre>
<p> <p>
“AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。这意味着如果我们现在提交快照,我们记录的将是上次跑 <code>git add</code> 的时候的文件版本而不是现在在磁盘中的这个。Git 并不认为磁盘中的文件与您想快照的文件必须是一致的 —— (如果您需要它们一致,)得用 <code>git add</code> 命令告诉它。 “AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。这意味着如果我们现在提交快照,我们提交的将是上次执行 <code>git add</code> 的时候的文件版本而不是现在在磁盘中的这个。Git 并不认为磁盘中的文件与您想快照的文件必须是一致的 —— (如果您需要它们一致,)得用 <code>git add</code> 命令告诉它。
</p> </p>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong> <strong>简而言</strong>
当您要将您的修改包含在即将提交的快照里的时候,执行 <code>git add</code>。任何您没有添加的改动都不会被包含在内 —— 这意味着您可以比绝大多数其他源代码版本控制系统更精确地归置您的快照。 当您要将您的修改包含在即将提交的快照里的时候,执行 <code>git add</code>。任何您没有添加的改动都不会被包含在内 —— 这意味着您可以比其他的绝大多数源代码版本控制系统更精确地控制您的快照。
</p> </p>
<p>请查看《Pro Git》中 <code>git add</code> 的 “-p” 参数,以了解更多关于提交文件的灵活性的例子。 <p>请查看《Pro Git》中 <code>git add</code> 的 “-p” 参数,以了解更多关于提交文件的灵活性的例子。
@ -102,7 +102,7 @@ layout: zh_reference
</h2> </h2>
<div class="block"> <div class="block">
<p>正如您在 <code>git add</code> 小节中所看到的,您可以执行 <code>git status</code> 命令查看您的代码在缓存与当前工作目录的状态。我演示该命令的时候加了 <code>-s</code> 参数,以获得简短的结果输出。若没有这个标记,命令 <code>git status</code> 将告诉您更多的提示与上下文欣喜。以下便是同样状态下,有跟没有 <code>-s</code> 参数的输出对比。简短的输出如下: <p>正如您在 <code>git add</code> 小节中所看到的,您可以执行 <code>git status</code> 命令查看您的代码在缓存与当前工作目录的状态。我演示该命令的时候加了 <code>-s</code> 参数,以获得简短的结果输出。若没有这个标记,命令 <code>git status</code> 将告诉您更多的提示与上下文信息。以下便是同样状态下,有跟没有 <code>-s</code> 参数的输出对比。简短的输出如下:
</p> </p>
<pre> <pre>
@ -153,7 +153,7 @@ layout: zh_reference
</pre> </pre>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,执行 <code>git status</code> 以查看在您上次提交之后有啥被修改或者临时提交了,从而决定自己是否需要提交一次快照,同时也能知道有什么改变被记录进去了。 <strong>简而言</strong>,执行 <code>git status</code> 以查看在您上次提交之后有啥被修改或者临时提交了,从而决定自己是否需要提交一次快照,同时也能知道有什么改变被记录进去了。
</p> </p>
</div> </div>
@ -327,7 +327,7 @@ index 2aabb6e..2ae9ba4 100644
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong> <strong>简而言</strong>
执行 <code>git diff</code> 来查看执行 <code>git status</code> 的结果的详细信息 —— 一行一行地显示这些文件是如何被修改或写入缓存的。 执行 <code>git diff</code> 来查看执行 <code>git status</code> 的结果的详细信息 —— 一行一行地显示这些文件是如何被修改或写入缓存的。
</p> </p>
@ -466,7 +466,7 @@ nothing to commit (working directory clean)
</p> </p>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,执行 <code>git commit</code> 记录缓存区的快照。这个快照就可以用来做比较、分享以及,如果需要,恢复。 <strong>简而言</strong>,执行 <code>git commit</code> 记录缓存区的快照。如果需要的话,这个快照可以用来做比较、共享以及恢复。
</p> </p>
</div> </div>
@ -513,7 +513,7 @@ M hello.rb
</p> </p>
<p class="aside"> <p class="aside">
如果您好奇,它实际的操作是将该文件在“索引”中的校验和重置为最近一次提交中的值。<code>git add</code> 会计算一个文件的校验和,将它添加到“索引”中,而 <code>git reset HEAD</code> 将它改写回原先的,从而取消缓存。 如果您好奇,它实际的操作是将该文件在“索引”中的校验和重置为最近一次提交中的值。<code>git add</code> 会计算一个文件的校验和,将它添加到“索引”中,而 <code>git reset HEAD</code> 将它改写回原先的,从而取消缓存操作
</p> </p>
<p class="tip"> <p class="tip">
@ -535,7 +535,7 @@ M hello.rb
</pre> </pre>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,执行 <code>git reset HEAD</code> 以取消之前 <code>git add</code> 添加,但不希望包含在下一提交快照中的缓存。 <strong>简而言</strong>,执行 <code>git reset HEAD</code> 以取消之前 <code>git add</code> 添加,但不希望包含在下一提交快照中的缓存。
</p> </p>
</div> </div>
@ -571,11 +571,11 @@ M hello.rb
</p> </p>
<p class="aside"> <p class="aside">
我自己不会用此命令的普通形式 —— 删除文件。通常直接从硬盘删除文件,然后执行 <code>git commit -a</code> 会简单些。它会自动将删除的文件从索引中移除。 我自己并不使用此命令的普通形式 —— 删除文件。通常直接从硬盘删除文件,然后执行 <code>git commit -a</code> 会简单些。它会自动将删除的文件从索引中移除。
</p> </p>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong> <strong>简而言</strong>
执行 <code>git rm</code> 来删除 Git 追踪的文件。它还会删除您的工作目录中的相应文件。 执行 <code>git rm</code> 来删除 Git 追踪的文件。它还会删除您的工作目录中的相应文件。
</p> </p>

View File

@ -14,7 +14,7 @@ layout: zh_reference
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b>,您可以执行 <code>git branch (branchname)</code> 来创建分支,使用 <code>git checkout (branchname)</code> 命令切换到该分支在该分支的上下文环境中提交快照等之后可以很容易地来回切换。当您切换分支的时候Git 会用该分支的最后提交的快照替换您的工作目录的内容,所以多个分支不需要多个目录。使用 <code>git merge</code> 来合并分支。您可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支。 <b>简而言</b>,您可以执行 <code>git branch (branchname)</code> 来创建分支,使用 <code>git checkout (branchname)</code> 命令切换到该分支在该分支的上下文环境中提交快照等之后可以很容易地来回切换。当您切换分支的时候Git 会用该分支的最后提交的快照替换您的工作目录的内容,所以多个分支不需要多个目录。使用 <code>git merge</code> 来合并分支。您可以多次合并到统一分支,也可以选择在合并之后直接删除被并入的分支。
</p> </p>
</div> </div>
@ -50,7 +50,7 @@ layout: zh_reference
<small>列出可用的分支</small> <small>列出可用的分支</small>
</h4> </h4>
<p>没有参数是,<code>git branch</code> 会列出您在本地的分支。您所在的分支的行首会有个星号作标记。如果您开启了<a href="http://progit.org/book/ch7-1.html#colors_in_git">彩色模式</a>,当前分支会用绿色显示。 <p>没有参数是,<code>git branch</code> 会列出您在本地的分支。您当前所在的分支的行首会有个星号作标记。如果您开启了<a href="http://progit.org/book/ch7-1.html#colors_in_git">彩色模式</a>,当前分支会用绿色显示。
</p> </p>
<pre> <pre>
@ -167,7 +167,7 @@ Deleted branch testing (was 78b2670).
</pre> </pre>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 使用 <code>git branch</code> 列出现有的分支、创建新分支以及删除不必要或者已合并的分支。 <b>简而言</b> 使用 <code>git branch</code> 列出现有的分支、创建新分支以及删除不必要或者已合并的分支。
</p> </p>
</div> </div>
@ -377,7 +377,7 @@ M README
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 使用 <code>git merge</code> 将另一个分支并入当前的分支中去。Git 会自动以最佳方式将两个不同快照中独特的工作合并到一个新快照中去。 <b>简而言</b> 使用 <code>git merge</code> 将另一个分支并入当前的分支中去。Git 会自动以最佳方式将两个不同快照中独特的工作合并到一个新快照中去。
</p> </p>
</div> </div>
@ -551,7 +551,7 @@ ab5ab4c added erlang
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 使用 <code>git log</code> 列出促成当前分支目前的快照的提交历史记录。这使您能够看到项目是如何到达现在的状况的。 <b>简而言</b> 使用 <code>git log</code> 列出促成当前分支目前的快照的提交历史记录。这使您能够看到项目是如何到达现在的状况的。
</p> </p>
</div> </div>

View File

@ -51,7 +51,7 @@ Initialized empty Git repository in /opt/konichiwa/.git/
恭喜,现在您就有了一个 Git 仓库的架子,可以开始快照您的项目了。 恭喜,现在您就有了一个 Git 仓库的架子,可以开始快照您的项目了。
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,用 <code>git init</code> 来在目录中创建新的 Git 仓库。您可以在任何时候、任何目录中这么做,完全是本地化的。 <strong>简而言</strong>,用 <code>git init</code> 来在目录中创建新的 Git 仓库。您可以在任何时候、任何目录中这么做,完全是本地化的。
</p> </p>
</div> </div>
@ -68,7 +68,7 @@ Initialized empty Git repository in /opt/konichiwa/.git/
</h2> </h2>
<div class="block"> <div class="block">
<p> <p>
如果您需要与他人合作一个项目,或者想要拷贝一个项目,看看代码,您就可以克隆那个项目。执行 <code>git clone [url]</code>[url] 为您想要拷贝的项目,就可以了。 如果您需要与他人合作一个项目,或者想要复制一个项目,看看代码,您就需要克隆那个项目。执行 <code>git clone [url]</code>[url] 为您想要拷贝的项目,就可以了。
</p> </p>
<pre> <pre>
@ -85,7 +85,7 @@ README Rakefile <span class="blue">lib</span>
</pre> </pre>
<p> <p>
上述操作将拷贝该项目的全部记录,让您本地拥有这些。并且该操作将拷贝该项目的主分支,是您能够查看代码,或编辑修改。进到该目录中,您会看到 <code>.git</code> 子目录。所有的项目数据都存在里。 上述操作将拷贝该项目的全部记录,让您本地拥有这些。并且该操作将拷贝该项目的主分支,使您能够查看代码,或进行编辑和修改。进到该目录中,您会看到 <code>.git</code> 子目录。所有的项目数据都存在里。
</p> </p>
<pre> <pre>
@ -99,14 +99,14 @@ config index <span class="blue">objects</span>
</pre> </pre>
<p> <p>
默认情况下Git 会按照您提供的 URL 所指示的项目的名称创建您的本地项目目录。通常就是该 URL 最后一个 <code>/</code> 之后的任何东西。如果你想要一个不一样的名字,您可以在该命令后加上它,就在那个 URL 后面 默认情况下Git 会按照您提供的 URL 所指示的项目的名称创建您的本地项目目录。通常就是该 URL 最后一个 <code>/</code> 之后的任何东西。您可以在该命令后(即那个 URL 后面)加上它你想要的目录名
</p> </p>
<p class="nutshell"> <p class="nutshell">
<strong>一言以蔽</strong>,使用 <code>git clone</code> 本地拷贝一个 Git 仓库,让自己能够查看该项目,或者动手修改 <strong>简而言</strong>,使用 <code>git clone</code> 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
</p> </p>
</div> </div>
</div> </div>
<p><a href="/zh/basic">接下来:简单快照 &#187;</a></p> <p><a href="/zh/basic">接下来:基本快照 &#187;</a></p>

View File

@ -45,9 +45,9 @@ layout: zh_reference
$ unzip project.2010-06-01.zip $ unzip project.2010-06-01.zip
$ cp -R project.2010-06-01 project-my-copy $ cp -R project.2010-06-01 project-my-copy
$ cd project-my-copy $ cd project-my-copy
$ (改了些东西) $ (做了某些修改)
$ diff project-my-copy project.2010-06-01 > change.patch $ diff project-my-copy project.2010-06-01 > change.patch
$ (email change.patch)</pre> $ (通过E-mail发送修改补丁)</pre>
<p> <p>
以此方式,原先的开发者就能将其他人的改动应用到他的项目中去,其他开发者也能了解您做的变更。其实这便是许多开源项目采用过多年的协作方式。 以此方式,原先的开发者就能将其他人的改动应用到他的项目中去,其他开发者也能了解您做的变更。其实这便是许多开源项目采用过多年的协作方式。
@ -64,7 +64,7 @@ layout: zh_reference
<center><img src="./images/snapshots.png"/></center> <center><img src="./images/snapshots.png"/></center>
<p> <p>
如果您可以将 Git 看作一个排序、对比以及合并项目更新的工具,那就容易理解状况和正确做事了。 如果您将 Git 看作一个排序、对比以及合并项目更新的工具,那就很容易理解并正确做事了。
</p> </p>
</div> </div>

View File

@ -15,7 +15,7 @@ layout: zh_reference
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 执行 <code>git log</code> 找到您的项目历史中的特定提交 —— 按作者、日期、内容或者历史记录。执行 <code>git diff</code> 比较历史记录中的两个不同的点 —— 通常是为了看看两个分支有啥区别,或者从某个版本到另一个版本,您的软件都有啥变化。 <b>简而言</b> 执行 <code>git log</code> 找到您的项目历史中的特定提交 —— 按作者、日期、内容或者历史记录。执行 <code>git diff</code> 比较历史记录中的两个不同的点 —— 通常是为了看看两个分支有啥区别,或者从某个版本到另一个版本,您的软件都有啥变化。
</p> </p>
</div> </div>
</div> </div>
@ -405,7 +405,7 @@ index bb86f00..192151c 100644
<p class="nutshell"> <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> </p>
</div> </div>

View File

@ -23,7 +23,7 @@ layout: zh_reference
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 使用 <code>git fetch</code> 更新您的项目,使用 <code>git push</code> 分享您的改动。您可以用 <code>git remote</code> 管理您的远程仓库。 <b>简而言</b> 使用 <code>git fetch</code> 更新您的项目,使用 <code>git push</code> 分享您的改动。您可以用 <code>git remote</code> 管理您的远程仓库。
</p> </p>
</div> </div>
</div> </div>
@ -118,7 +118,7 @@ github git@github.com:schacon/hw.git (push)
</pre> </pre>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 您可以用 <code>git remote</code> 列出您的远端仓库和那些仓库的链接。您可以使用 <code>git remote add</code> 添加新的远端仓库,用 <code>git remote rm</code> 删掉已存在的那些。 <b>简而言</b> 您可以用 <code>git remote</code> 列出您的远端仓库和那些仓库的链接。您可以使用 <code>git remote add</code> 添加新的远端仓库,用 <code>git remote rm</code> 删掉已存在的那些。
</p> </p>
</div> </div>
@ -186,7 +186,7 @@ From github.com:schacon/hw
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 执行 <code>git fetch [alias]</code> 来将您的仓库与远端仓库同步,提取所有它独有的数据到本地分支以合并或者怎样。 <b>简而言</b> 执行 <code>git fetch [alias]</code> 来将您的仓库与远端仓库同步,提取所有它独有的数据到本地分支以合并或者怎样。
</p> </p>
</div> </div>
@ -265,7 +265,7 @@ fast-forwards' section of 'git push --help' for details.
</p> </p>
<p class="nutshell"> <p class="nutshell">
<b>一言以蔽</b> 执行 <code>git push [alias] [branch]</code> 将您的本地改动推送到远端仓库。如果可以的话,它会依据您的 [branch] 的样子,推送到远端的 [branch] 去。如果在您上次提取、合并之后另有人推送了Git 服务器会拒绝您的推送,知道您是最新的为止。 <b>简而言</b> 执行 <code>git push [alias] [branch]</code> 将您的本地改动推送到远端仓库。如果可以的话,它会依据您的 [branch] 的样子,推送到远端的 [branch] 去。如果在您上次提取、合并之后另有人推送了Git 服务器会拒绝您的推送,知道您是最新的为止。
</p> </p>
</div> </div>