Git-查看提交歷史


$ git log

  該命令可用於查看項目的提交歷史,可以使用項目GitTest為例進行試驗,首先克隆源代碼到本地:

$ git clone https://github.com/fancyop/GitTest.git

  下載完成在此項目中直接運行 git log,默認不用任何參數的話,git log 會按提交時間列出所有的更新,最近的更新排在最上面,可以看到:

$ git log commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:59:08 2019 +0800 modified README.md commit e5dd834bc08e9220bd110054e79345ed917972ce Merge: ce8bfb6 61369e9 Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:55:40 2019 +0800 Merge branch 'testBranch2' ......

 (1)常用參數    

  git log [-參數]

  A、不同信息輸出(點擊可跳轉到相應示例代碼)

      [-p]:用來顯示每次提交的內容差異。

    [--stat]:用來顯示每次提交的下面列出所有被修改過的文件、有多少文件被修改了以及被修改過的文件的哪些行被移除或是添加了。 在每次提交的最后還有一個總結。

    [--shortstat]:只顯示 --stat 中最后的行數修改添加移除統計。

    [--name-only]:僅在提交信息后顯示已修改的文件清單。

    [--name-status]:顯示新增、修改、刪除的文件清單。

    [--abbrev-commit]:僅顯示 SHA-1 的前幾個字符,而非所有的 40 個字符。

    [--relative-date]:使用較短的相對時間顯示(比如,“2 weeks ago”)。

    [--pretty]:這個參數可以指定使用不同於默認格式的方式展示提交歷史。 這個選項有一些內建的子選項供你使用。

      [--pretty=oneline]:比如用 oneline 將每個提交放在一行顯示,查看的提交數很大時非常有用。

      [--pretty=short]、[--pretty=full] 、 [--pretty=fuller] 等展示的信息或多或少有些不同。

      [--pretty=format]:[--pretty]的選項值為format可以定制要顯示的記錄格式,這樣的輸出對后期提取分析格外有用,具體事例命令如:git log --pretty=format:"%h - %an, %ar : %s"

    下面表格是format可選的常用選項:

選項 說明

%H

提交對象(commit)的完整哈希字串

%h

提交對象的簡短哈希字串

%T

樹對象(tree)的完整哈希字串

%t

樹對象的簡短哈希字串

%P

父對象(parent)的完整哈希字串

%p

父對象的簡短哈希字串

%an

作者(author)的名字

%ae

作者的電子郵件地址

%ad

作者修訂日期(可以用 --date= 選項定制格式)

%ar

作者修訂日期,按多久以前的方式顯示

%cn

提交者(committer)的名字

%ce

提交者的電子郵件地址

%cd

提交日期

%cr

提交日期,按多久以前的方式顯示

%s

提交說明

    [--graph]:可以用來形象的展示分支、合並歷史,經常和參數--pretty中的值oneline和format選項結合使用。

  B、篩選輸出

    [-(n)]:如數字n為2時,即命令是 git log -2,用來顯示最近兩次的提交。

    [--since], [--after]:僅顯示指定時間之后的提交。

    [--until], [--before]:僅顯示指定時間之前的提交。

    [--author]:僅顯示指定作者相關的提交。

    [--committer]:僅顯示指定提交者相關的提交。

    [--grep]:僅顯示含指定關鍵字的提交。

    [-S]:僅顯示添加或移除了某個關鍵字的提交。

    最后一個很實用的 git log 選項是路徑(path), 如果只關心某些文件或者目錄的歷史提交,可以在 git log 選項的最后指定它們的路徑。 因為是放在最后位置上的選項,所以用兩個短划線(--)隔開之前的選項和后面限定的路徑名。

(2)命令示例及相應輸出(點擊可跳轉到相應示例代碼)

$ git log -p commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:59:08 2019 +0800 modified README.md diff --git a/README.md b/README.md index c062db5..4ad5ef9 100644
--- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# first version -# add hello.c \ No newline at end of file
+# master
...
$ git log --stat commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:59:08 2019 +0800 modified README.md README.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-) commit e5dd834bc08e9220bd110054e79345ed917972ce Merge: ce8bfb6 61369e9 Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:55:40 2019 +0800 Merge branch 'testBranch2' commit ce8bfb699410e8886aa04f4dc48396d2771fd415 Author: fancyop <fancyop@qq.com> Date: Wed May 22 15:43:26 2019 +0800 delete test2.txt test2.txt | 1 -
 1 file changed, 1 deletion(-)
...

 

$ git log --shortstat
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

 1 file changed, 1 insertion(+), 2 deletions(-)

commit e5dd834bc08e9220bd110054e79345ed917972ce
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:55:40 2019 +0800

    Merge branch 'testBranch2'
...
$ git log --name-only
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

README.md

commit e5dd834bc08e9220bd110054e79345ed917972ce
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:55:40 2019 +0800

    Merge branch 'testBranch2'
...
$ git log --name-status
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

M       README.md

commit e5dd834bc08e9220bd110054e79345ed917972ce
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:55:40 2019 +0800

    Merge branch 'testBranch2'
...
$ git log --abbrev-commit
commit 36924e5 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

commit e5dd834
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:55:40 2019 +0800

    Merge branch 'testBranch2'
...
$ git log --relative-date
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   3 hours ago

    modified README.md

commit e5dd834bc08e9220bd110054e79345ed917972ce
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   3 hours ago

    Merge branch 'testBranch2'
...
$ git log --pretty=oneline 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) modified README.md e5dd834bc08e9220bd110054e79345ed917972ce Merge branch 'testBranch2' ce8bfb699410e8886aa04f4dc48396d2771fd415 delete test2.txt 61369e94dbc4ab8716ba8a148f3397dc312b70eb (origin/testBranch) copy sample.png to sample_copy.png, add sample_copy.png 124bf7f54d725770290c8e6bc08aab69fba4ca1d add test2.txt file 84d85f06fadad841de747ac29b09476dd9b339b7 add xxx.c file 1b5352774fea376d8026f5455a7f0933c68aff5a delete test.txt 2fa98d0f1460ac88d7587b5e1f280ea553391c39 add sample.png 85c0902fc3fb2d039902d27f95d254d846a14877 add test.txt c42e19c08c515e72c45f9b32e63200c22f3e06fb add printGood function 7b2d304e6aea5ab89d86e5e13b0653db3a47ab5e first version
$ git log --pretty=short commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> modified README.md commit e5dd834bc08e9220bd110054e79345ed917972ce Merge: ce8bfb6 61369e9 Author: fancyop <fancyop@qq.com> Merge branch 'testBranch2' commit ce8bfb699410e8886aa04f4dc48396d2771fd415 Author: fancyop <fancyop@qq.com> delete test2.txt commit 61369e94dbc4ab8716ba8a148f3397dc312b70eb (origin/testBranch) Author: fancyop <fancyop@qq.com> copy sample.png to sample_copy.png, add sample_copy.png
...
$ git log --pretty=full commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> Commit: fancyop <fancyop@qq.com> modified README.md commit e5dd834bc08e9220bd110054e79345ed917972ce Merge: ce8bfb6 61369e9 Author: fancyop <fancyop@qq.com> Commit: fancyop <fancyop@qq.com> Merge branch 'testBranch2' commit ce8bfb699410e8886aa04f4dc48396d2771fd415 Author: fancyop <fancyop@qq.com> Commit: fancyop <fancyop@qq.com> delete test2.txt commit 61369e94dbc4ab8716ba8a148f3397dc312b70eb (origin/testBranch) Author: fancyop <fancyop@qq.com> Commit: fancyop <fancyop@qq.com> copy sample.png to sample_copy.png, add sample_copy.png
...
$ git log --pretty=fuller commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD) Author: fancyop <fancyop@qq.com> AuthorDate: Wed May 22 15:59:08 2019 +0800 Commit: fancyop <fancyop@qq.com> CommitDate: Wed May 22 15:59:08 2019 +0800 modified README.md commit e5dd834bc08e9220bd110054e79345ed917972ce Merge: ce8bfb6 61369e9 Author: fancyop <fancyop@qq.com> AuthorDate: Wed May 22 15:55:40 2019 +0800 Commit: fancyop <fancyop@qq.com> CommitDate: Wed May 22 15:55:40 2019 +0800 Merge branch 'testBranch2' commit ce8bfb699410e8886aa04f4dc48396d2771fd415 Author: fancyop <fancyop@qq.com> AuthorDate: Wed May 22 15:43:26 2019 +0800 Commit: fancyop <fancyop@qq.com> CommitDate: Wed May 22 15:43:26 2019 +0800 delete test2.txt
$ git log --pretty=format:"%h - %an, %ar : %s" 36924e5 - fancyop, 2 hours ago : modified README.md e5dd834 - fancyop, 2 hours ago : Merge branch 'testBranch2' ce8bfb6 - fancyop, 2 hours ago : delete test2.txt 61369e9 - fancyop, 2 hours ago : copy sample.png to sample_copy.png, add sample_copy.png 124bf7f - fancyop, 2 hours ago : add test2.txt file 84d85f0 - fancyop, 2 hours ago : add xxx.c file 1b53527 - fancyop, 3 hours ago : delete test.txt 2fa98d0 - fancyop, 3 hours ago : add sample.png 85c0902 - fancyop, 3 hours ago : add test.txt c42e19c - fancyop, 3 hours ago : add printGood function 7b2d304 - fancyop, 6 hours ago : first version
$ git log --pretty=format:"%h %s" --graph * 36924e5 modified README.md *   e5dd834 Merge branch 'testBranch2'
|\ | * 61369e9 copy sample.png to sample_copy.png, add sample_copy.png | * 84d85f0 add xxx.c file
* | ce8bfb6 delete test2.txt * | 124bf7f add test2.txt file
|/
* 1b53527 delete test.txt * 2fa98d0 add sample.png * 85c0902 add test.txt * c42e19c add printGood function
* 7b2d304 first version

 

$ git log -2
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

commit e5dd834bc08e9220bd110054e79345ed917972ce
Merge: ce8bfb6 61369e9
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:55:40 2019 +0800

    Merge branch 'testBranch2'

 

$ git log --since=4.hour
$ git log --since=2.week
$ git log --after="2019-05-21"
$ git log --after="2 years 1 day 3 minutes ago"

$ git log --until=4.hour
$ git log --until=2.week
$ git log --before="2019-05-21"
$ git log --before="2 years 1 day 3 minutes ago"

$ git log --author fancyop

$ git log --committer fancyop

$ git log --grep=first
commit 7b2d304e6aea5ab89d86e5e13b0653db3a47ab5e
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 11:39:24 2019 +0800

    first version

$ git log -S add
commit 36924e519cf540f1f2c30517cd43dcfad3d03619 (HEAD -> master, origin/master, origin/HEAD)
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 15:59:08 2019 +0800

    modified README.md

commit 7b2d304e6aea5ab89d86e5e13b0653db3a47ab5e
Author: fancyop <fancyop@qq.com>
Date:   Wed May 22 11:39:24 2019 +0800

    first version

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM