实际上 git status 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令。稍后我们会详细介绍 git diff,不过现在,它已经能回答我们的两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? git diff 会使用文件补丁的格式显示具体添加和删除的行。
假如再次修改 README 文件后暂存,然后编辑 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]
要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff:
[code]$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f…da65585 100644
— a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
@commit.parents[0].parents[0].parents[0]
end
-
run_code(x, 'commits 1') do
-
git.commits.size
-
end
-
run_code(x, 'commits 2') do log = git.commits('master', 15) log.size[/code]
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached 命令。
(Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。)来看看实际的效果:
[code]$ git diff --cached
diff --git a/README b/README
new file mode 100644
index 0000000…03902a1
— /dev/null
+++ b/README2
@@ -0,0 +1,5 @@
+grit
- by Tom Preston-Werner, Chris Wanstrath
- GitHub - mojombo/grit: **Grit is no longer maintained. Check out libgit2/rugged.** Grit gives you object oriented read/write access to Git repositories via Ruby.
+Grit is a Ruby library for extracting information from a Git repository[/code]
请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
像之前说的,暂存 benchmarks.rb 后再编辑,运行 git status 会看到暂存前后的两个版本:
[code]$ git add benchmarks.rb
$ echo ‘# test line’ >> benchmarks.rb
$ git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)
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]
现在运行 git diff 看暂存前后的变化:
[code]$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index e445e28…86b2f7c 100644
— a/benchmarks.rb
+++ b/benchmarks.rb
@@ -127,3 +127,4 @@ end
main()
##pp Grit::GitRuby.cache_client.stats
+# test line[/code]
然后用 git diff --cached 查看已经暂存起来的变化:
[code]$ git diff --cached
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f…e445e28 100644
— a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
@commit.parents[0].parents[0].parents[0]
end
-
run_code(x, 'commits 1') do
-
git.commits.size
-
end
-
run_code(x, 'commits 2') do log = git.commits('master', 15) log.size[/code]
REF:[url]http://cwiki.ossez.com/pages/viewpage.action?pageId=7045474[/url]