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 blamegit 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 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 同上...