Git--git log

參考

http://www.javashuo.com/article/p-zzlvveip-kc.htmlhtml

https://www.cnblogs.com/mkl34367803/p/9219913.htmlgit

https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2正則表達式

 

git log用於查詢版本的歷史,命令形式以下
  git log [<options>] [<since>..<until>] [[--] <path>...] 
 

挑選一些經常使用選項工具

不帶參數

 git log 字體

若是不帶任何參數,它會列出全部歷史記錄,最近的排在最上方,顯示提交對象的哈希值,做者、提交日期、和提交說明spa

 

查詢提交內容統計stat

 git log --stat debug

顯示每次提交的內容,僅顯示簡要的增改行數統計3d

 

 

格式化輸出pretty

 git log --pretty=[...] 日誌

使用其餘格式顯示歷史提交信息,可選項有:orm

  • oneline
  • short
  • medium
  • full
  • fuller
  • email
  • raw
  • format:<string>,默認爲medium,如:

 --pretty=oneline :一行顯示,只顯示哈希值和提交說明(--online自己也能夠做爲單獨的屬性)

 

 --pretty=format:"" :控制顯示的記錄格式,如:

  • %H  提交對象(commit)的完整哈希字串
  • %h  提交對象的簡短哈希字串
  • %T  樹對象(tree)的完整哈希字串
  • %t  樹對象的簡短哈希字串
  • %P  父對象(parent)的完整哈希字串
  • %p  父對象的簡短哈希字串
  • %an 做者的名字(author name)
  • %ae 做者的電子郵件地址(author email)
  • %ad 做者修訂日期(能夠用 -date= 選項定製格式)
  • %ar 做者修訂日期,按多久之前的方式顯示
  • %cn 提交者(committer)的名字

    做者和提交者的區別不知道是啥?

    做者與提交者的關係:做者是程序的修改者,提交者是代碼提交人(本身的修改不提交是怎麼能讓別人拉下來再提交的?)

    其實做者指的是實際做出修改的人,提交者指的是最後將此工做成果提交到倉庫的人。因此,當你爲某個項目發佈補丁,而後某個核心成員將你的補丁併入項目時,你就是做者,而那個核心成員    就是提交者(soga)

  • %ce 提交者的電子郵件地址
  • %cd 提交日期(能夠用 -date= 選項定製格式)
  • %cr 提交日期,按多久之前的方式顯示
  • %s  提交說明

帶顏色的 --pretty=format:"" ,這個另外寫出來分析

以這句爲例:%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>

它的效果是:   

先斷句:[%Cred%h][%Creset   -][%C(yellow)%d ][%Cblue%s][%Cgreen(%cd)][%C(bold blue)<%an>]

而後就是很明顯能獲得的規律了

一個顏色+一個內容

顏色以%C開頭,後邊接幾種顏色,還能夠設置字體,若是要設置字體的話,要一塊加個括號

能設置的顏色值包括: reset (默認的灰色), normal ,  black ,  red ,  green ,  yellow ,  blue ,  magenta ,  cyan ,  white .

字體屬性則有 bold ,  dim ,  ul ,  blink ,  reverse .  

內容能夠是佔位元字符,也能夠是直接顯示的普通字符

  • 查詢用戶,郵件,commit message的且在指定日期內的帶顏色的提交

 

 

控制輸出日誌條目n

 git log -n [N] 

顯示前n條log

  • 查詢最近的2條提交

 

根據時間查詢after和before

 git log --after="yyyy-mm-dd" 

  • 查詢2019-01-01到2019-03-06的全部提交

 

根據用戶名查詢author

 git log --author=[...] 

author使用用戶名或者郵箱均可以,查詢結果是一致的.

做者名不須要精確匹配,只須要包含就好了.

可使用正則表達式.

  • 查詢指定用戶的全部提交

 

 

根據提交消息查詢grep

 git log --grep=[...] 

過濾提交信息commit message記錄

能夠傳入-i用來忽略大小寫

注意:若是想同時使用--grep和--author,必須在附加一個--all-match參數

  • 查詢commit message包含edp608的全部提交

 

按文件查詢--

 git log -- [path] 

 - -(空格)或[沒有]

有時你可能只對某個文件的修改感興趣, 你只想查看跟某個文件相關的歷史信息, 你只須要插入你感興趣文件的路徑[對,是路徑,因此常常是不太好用]就能夠了

好比: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文件夾下全部文件的提交記錄

  • 查詢指定文件的全部提交記錄

 

 

根據提交的文件內容查詢-S/-G

 git log -S"..." 

 git log -G"..." 

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

假設你想知道Hello, World!這句話是何時加入到項目裏去的,能夠用:git log -S"Hello,World!"

另外:若是你想使用正則表達式去匹配而不是字符串, 那麼你可使用-G代替-S.

這是一個很是有用的debug工具, 使用他你能夠定位全部跟某行代碼相關的commit. 甚至能夠查看某行是何時被copy的, 何時移到另一個文件中去的

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

  • 查詢內容有指定字符串的提交

 

 

查詢單次提交內容show

 git show [commit hash] [filePath] 

  • 查詢在哈希值爲2d38...提交下的全部修改內容

  •  查詢pom文件在哈希值爲2d38...提交下的修改狀況

相關文章
相關標籤/搜索