顯示兩個版本間的差異


顯示兩個版本間的差異:
git diff rev1 rev2

git中的版本號

其中git的版本並不是一個類似於svn的數字編號,git中的版本號一般為特定的commit的id,如: # git log
commit f22369978d8e054b8f032f36783a00a8476196a6               <----這里的f22369978d8e054b8f032f36783a00a8476196a6就是一個版本
Author:XXX <XXXX@gmail.com>
Date:   Sun Jun 9 10:17:14 2013 +0800

git中的特殊符合HEAD

我們知道,在git中HEAD是指向當前分支的,或者當前分支的最后一個版本。如man手冊中git對於HEAD符號的定義是:"indicates the head of the current branch."。 那么如果我們需要比較當前版本和上一個版本的差異,上面命令中的rev1就可以使用HEAD替代: git diff HEAD rev2

簡寫版本

通過查看git diff的help說明,我們發現git diff有如下幾種模式:        git diff [options] [<commit>] [--] [<path>...]
       git diff [options] --cached [<commit>] [--] [<path>...]
       git diff [options] <commit> <commit> [--] [<path>...]
       git diff [options] [--no-index] [--] <path> <path>
其中,注意形式1和形式3,不同的是形式3有兩個<commit>部分,而形式1只有一個<commit>部分,其說明如下: This form is to view the changes you have in your working tree relative to the named <commit>. 因此,上面命令中的HEAD可以省去。 git diff rev2 【注】此處請注意是working tree,因此,如果要比較版本庫中的最后一次版本和上一版本的差異,使用此命令的限制必須是working tree和版本庫中保持一致,即使用git st查看沒有任何改動。

超級簡寫版本

此處引入兩個后綴符號:^和~,結合剛才的HEAD,即HEAD^和HEAD~。他們的說明如下: <rev>^<n>      A suffix ^ to a revision parameter means the first parent of that commit object.^<n> means the <n>th parent, (i.e. <rev>^ is equivalent to <rev>^1). As a special rule, <rev>^0 means the commit itself.  <rev>~<n>       A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation ancestor of the named commit object, following only the first parents.  簡單理解就是,當n等於1時或者省略時,HEAD^和HEAD~都表示是HEAD版本的父版本或上一版本;但是當n等於2時,表示的意義就有差異了。HEAD^2表示是當前版本的第二個父版本(用於分支合並時),而HEAD~2表示當前版本的上兩個版本,即父版本的父版本。 因此,上面命令中的rev2可以替換為HEAD^或HEAD~,即完整命令為: git diff HEAD^ 或 git diff HEAD~ 【注】此處同樣是working tree,因此,此命令的使用限制和上一個命令一致。 【注】關於<rev>^和<rev>~更詳細的解釋請參看git manual: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

最省事放心版本

結合HEAD和HEAD^的說明,如果我們需要比較兩個版本的差異,即可使用如下命令:      git diff HEAD HEAD~           比較當前版本和上一個版本的差異 或  git diff HEAD~1 HEAD~2     比較上一版本和上上個版本的差異
注: 由於我們使用git管理代碼的規模較小,一般不會出現多繼承的現象。即對於<rev>^<n>的使用場景較小

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com