git log命令全解析

2021-07-26 05:04:25 字數 4404 閱讀 5892

git log

git log用於查詢版本的歷史,命令形式如下:

git log  [..] [[--] ...]
這條命令有很多引數選項

一、不帶引數

如果不帶任何引數,它會列出所有歷史記錄,最近的排在最上方,顯示提交物件的雜湊值,作者、提交日期、和提交說明

如果記錄過多,則按page up、page down、↓、↑來控制顯示

按q退出歷史記錄列表

二、顯示引數

-p:按補丁顯示每個更新間的差異,比下一條- -stat命令資訊更全

--stat:顯示每次更新的修改檔案的統計資訊,每個提交都列出了修改過的檔案,以及其中新增和移除的行數,並在最後列出所有增減行數小計

--shortstat:只顯示--stat中最後的行數新增修改刪除統計

--name-only:盡在已修改的提交資訊後顯示檔案清單

--name-status:顯示新增、修改和刪除的檔案清單

--abbrev-commit:僅顯示sha-1的前幾個字元,而非所有的40個字元

--relative-date:使用較短的相對時間顯示(例如:"two weeks ago")

--graph:顯示ascii圖形表示的分支合併歷史

三、篩選引數

按數量-n:顯示前n條log

按日期--after=

比如git log --after="2014-7-1」,顯示2023年7月1號之後的commit(包含7月1號)

後邊的日期還可以用相對時間表示,比如"1 week ago"和」yesterday",比如git log --after="yesterday"

這裡的格式可以是什麼?

--before=

同上另外這兩條命令可以同時使用表示時間段,比如git log --after="2014-7-1" --before="2014-7-4"

另外--since --until和 --after --before是乙個意思,都可以用

檢視不同時間段的 git log

git log --until=1.minute.ago // 一分鐘之前的所有 log

git log --since=1.day.ago //一天之內的log

git log --since=1.hour.ago //乙個小時之內的 log

git log --since=`.month.ago --until=2.weeks.ago //乙個月之前到半個月之前的log

git log --since ==2013-08.01 --until=2013-09-07 //某個時間段的 log

按作者

--author=

比如git log --author=「john",顯示john貢獻的commit

注意:作者名不需要精確匹配,只需要包含就行了

而且:可以使用正規表示式,比如git log --author="john\|mary」,搜尋marry和john貢獻的commit

而且:這個--author不僅包含名還包含email, 所以你可以用這個搜尋email

按commit描述

--grep=

比如:git log --grep="jra-224"

而且:可以傳入-i用來忽略大小寫

注意:如果想同時使用--grep和--author,必須在附加乙個--all-match引數

按檔案- -(空格)或[沒有]

有時你可能只對某個檔案的修改感興趣, 你只想檢視跟某個檔案相關的歷史資訊, 你只需要插入你感興趣檔案的路徑[對,是路徑,所以經常是不太好用]就可以了

比如:git log -- foo.py bar.py ,只返回和foo.py或bar.py相關的commit

這裡的--是告訴git後面的引數是檔案路徑而不是branch的名字. 如果後面的檔案路徑不會和某個branch產生混淆, 你可以省略- -,比如git log foo.py 

另外,後邊的路徑還支援正則,比如:git log  *install.md 是,指定專案路徑下的所有以install.md結尾的檔案的提交歷史

另外,檔名應該放到引數的最後位置,通常在前面加上--並用空格隔開表示是檔案

另外,git log file/ 檢視file資料夾下所有檔案的提交記錄

按分支- -

--branchname branchname為任意乙個分支名字,檢視某個分支上的提交記錄

需要放到引數中的最後位置處

如果分支名與檔名相同,系統會提示錯 誤,可通過--選項來指定給定的引數是分支名還是檔名

比如:在當前分支中有乙個名為v1的檔案,同時還存在乙個名為v1的分支

git log v1 -- 此時的v1代表的是分支名字(--後邊是空的)

git log -- v1 此時的v1代表的是名為v1的檔案

git log v1 -- v1 代表v1分支下的v1檔案

按內容-s""、-g""

有時你想搜尋和新增或刪除某行**相關的commit. 可以使用這條命令

假設你想知道hello, world!這句話是什麼時候加入到專案裡去的,可以用:git log -s"hello,world!"

另外:如果你想使用正規表示式去匹配而不是字串, 那麼你可以使用-g代替-s.

這是乙個非常有用的debug工具, 使用他你可以定位所有跟某行**相關的commit. 甚至可以檢視某行是什麼時候被copy的, 什麼時候移到另外乙個檔案中去的

注:-s後沒有"=",與查詢內容之間也沒有空格符

按範圍git log ..這個命令可以檢視某個範圍的commit

這個命令非常有用當你使用branch做為range引數的時候. 能很方便的顯示2個branch之間的不同

比如:git log master..feature,master..feature這個range包含了在feature有而在master沒有的所有commit,同樣,如果是feature..master包含所有master有但是feature沒有的commit

另外,如果是三個點,表示或的意思:git log master...test 查詢master或test分支中的提交記錄

過濾掉merge commit

--no-merges

預設情況下git log會輸出merge commit.  你可以通過--no-merges標記來過濾掉merge commit,git log --no-merges

另外,如果你只對merge commit感興趣可以使用—merges,git log --merges

按標籤tag

git log v1.0

直接這樣是查詢標籤之前的commit

加兩個點git log v1.0.. 查詢從v1.0以後的提交歷史記錄(不包含v1.0)

按commit

git log commit :查詢commit之前的記錄,包含commit

git log commit1 commit2:查詢commit1與commit2之間的記錄,包括commit1和commit2

git log commit1..commit2:同上,但是不包括commit1

其中,commit可以是提交雜湊值的簡寫模式,也可以使用head代替

head代表最後一次提交,head^為最後乙個提交的父提交,等同於head~1

head~2代表倒數第二次提交

git diff 

git diff 是用來比較版本之間的差異變化 balbalbala 之類的,**修改了,**新增了 balbalbala

git diff head //與上次 commit 之間的差別(爸爸)

git diff head^ //與上上次(爺爺)

git diff head^^ //與上上上次(曾祖父)

git diff head~5 //與前面第5次commit(好吧…祖先吧)

git diff head^..head //中間是兩個點比較(爸爸)和(爺爺)的差別

git diff f5fdjsalfjdskaf..4fdklsajfdksaf //比較 兩個不同 hash 值記錄之間的不同

git diff master bird //比較 branch 之間的不同

git diff --since=1.week.ago --until=1.minute.ago //還可以根據時間來比較哦

git blame

如果你想要看看某乙個檔案的相關歷史記錄,可以使用git blame 命令。

如git blame index.html --date short

git log常用命令

git log 檢視提交記錄,引數 n n是乙個正整數 檢視最近n次的提交資訊 git log 2 檢視最近2次的提交歷史記錄 filenamefilename為任意檔名,檢視指定檔案的提交資訊。注 檔名應該放到引數的最後位置,通常在前面加上 並用空格隔開表示是檔案。git log file1 fi...

Git log常用命令

git 可以同過log來檢視歷史記錄 p 是 patch 的縮寫,通過 p 引數,可以看到具體每個 commit 的改動細節 可以直接輸入 git show 在shou後面加上要檢視的commit引用 當commits有很多記錄時,預設的顯示方式不利於我們快速檢視,這時候我們可以 pretty來優化...

git log 常用命令

如果不帶任何引數,它會列出所有歷史記錄,最近的排在最上方,顯示提交物件的雜湊值,作者 提交日期 和提交說明。如果記錄過多,則按page up page down 來控制顯示 按q退出歷史記錄列表。如果不想向上面那樣全部顯示,可以選擇顯示前n條。顯示簡要的增改行數統計,每次提交檔案的變更統計,n 同上...