你可以用?[git diff](http://www.kernel.org/pub/software/scm/git/docs/git-diff.html)?來比較項目中任意兩個版本的差異。
~~~
$ git diff master..test
~~~
上面這條命令只顯示兩個分支間的差異,如果你想找出‘master’,‘test’的共有 父分支和'test'分支之間的差異,你用3個‘.'來取代前面的兩個'.' 。
~~~
$ git diff master...test
~~~
[git diff](http://www.kernel.org/pub/software/scm/git/docs/git-diff.html)?是一個難以置信的有用的工具,可以找出你項目上任意兩點間 的改動,或是用來查看別人提交進來的新分支。
## 哪些內容會被提交(commit)
你通常用[git diff](http://www.kernel.org/pub/software/scm/git/docs/git-diff.html)來找你當前工作目錄和上次提交與本地索引間的差異。
~~~
$ git diff
~~~
上面的命令會顯示在當前的工作目錄里的,沒有 staged(添加到索引中),且在下次提交時 不會被提交的修改。
如果你要看在下次提交時要提交的內容(staged,添加到索引中),你可以運行:
~~~
$ git diff --cached
~~~
上面的命令會顯示你當前的索引和上次提交間的差異;這些內容在不帶"-a"參數運行 "git commit"命令時就會被提交。
~~~
$ git diff HEAD
~~~
上面這條命令會顯示你工作目錄與上次提交時之間的所有差別,這條命令所顯示的 內容都會在執行"git commit -a"命令時被提交。
## 更多的比較選項
如果你要查看當前的工作目錄與另外一個分支的差別,你可以用下面的命令執行:
~~~
$ git diff test
~~~
這會顯示你當前工作目錄與另外一個叫'test'分支的差別。你也以加上路徑限定符,來只 比較某一個文件或目錄。
~~~
$ git diff HEAD -- ./lib
~~~
上面這條命令會顯示你當前工作目錄下的lib目錄與上次提交之間的差別(或者更準確的 說是在當前分支)。
如果不是查看每個文件的詳細差別,而是統計一下有哪些文件被改動,有多少行被改 動,就可以使用‘--stat' 參數。
~~~
$>git diff --stat
layout/book_index_template.html | 8 ++-
text/05_Installing_Git/0_Source.markdown | 14 ++++++
text/05_Installing_Git/1_Linux.markdown | 17 +++++++
text/05_Installing_Git/2_Mac_104.markdown | 11 +++++
text/05_Installing_Git/3_Mac_105.markdown | 8 ++++
text/05_Installing_Git/4_Windows.markdown | 7 +++
.../1_Getting_a_Git_Repo.markdown | 7 +++-
.../0_ Comparing_Commits_Git_Diff.markdown | 45 +++++++++++++++++++-
.../0_ Hosting_Git_gitweb_repoorcz_github.markdown | 4 +-
9 files changed, 115 insertions(+), 6 deletions(-)
~~~
有時這樣全局性的查看哪些文件被修改,能讓你更輕輕一點。
- 1. 介紹
- 歡迎使用Git
- GIT對象模型
- Git目錄 與 工作目錄
- Git索引
- 2. 第一步
- 安裝Git
- 安裝與初始化
- 3. 基本用法
- 獲得一個Git倉庫
- 正常的工作流程
- 分支與合并@基礎
- 查看歷史 -Git日志
- 比較提交 - Git Diff
- 分布式的工作流程
- Git標簽
- 4. 中級技能
- 忽略某些文件
- rebase
- 交互式rebase
- 交互式添加
- 儲藏
- Git樹名
- 追蹤分支
- 使用Git Grep進行搜索
- Git的撤消操作 - 重置, 簽出 和 撤消
- 維護Git
- 建立一個公共倉庫
- 建立一個私有倉庫
- 5. 高級技能
- 創建新的空分支
- 修改你的歷史
- 高級分支與合并
- 查找問題的利器 - Git Bisect
- 查找問題的利器 - Git Blame
- Git和Email
- 定制Git
- Git Hooks
- 找回丟失的對象
- 子模塊
- 6. Git生態體系
- Git 與之 Windows
- 使用Git進行系統部署
- 與 Subversion 集成
- 從其他代碼管理工具遷移到Git
- 圖形化的Git
- Git倉庫托管
- Git的其它用法
- Git的腳本支持
- Git 與編輯器
- 7. 原理解析
- Git是如何存儲對象的
- 查看Git對象
- Git引用
- Git索引
- 打包文件
- 更底層的Git
- 傳輸協議
- 術語表