现在我们修改下之前已跟踪过的文件 benchmarks.rb,然后再次运行 status 命令,会看到这样的状态报告:
[code]$ git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)
new file: README
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes in working directory)
modified: benchmarks.rb[/code]
文件 benchmarks.rb 出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 git add 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。
现在让我们运行 git add 将 benchmarks.rb 放到暂存区,然后再看看 git status 的输出:
[code] git add benchmarks.rb
git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)
new file: README
modified: benchmarks.rb[/code]
现在两个文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在 benchmarks.rb 里再加条注释,重新编辑存盘后,准备好提交。不过且慢,再运行 git status 看看:
[code] vim benchmarks.rb
git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)
new file: README
modified: benchmarks.rb
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes in working directory)
modified: benchmarks.rb[/code]
怎么回事? benchmarks.rb 文件出现了两次!一次算未暂存,一次算已暂存,这怎么可能呢?好吧,实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来:
[code] git add benchmarks.rb
git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)
new file: README
modified: benchmarks.rb[/code]
REF:http://cwiki.ossez.com/pages/viewpage.action?pageId=7045474