git log提交歷史詳解
隨著專案的推進,會積累若干提交,如果瞭解每次提交相關資訊,僅靠人腦記憶不可靠,也不可能。
使用git log命令可以檢視提交歷史,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log
執行效果截圖如下:
git log指令不加其他引數,可以列出所有歷史提交,分析如下:
(1).按照提交的時間順序排列,上層的是更新的提交。
(2).commit後面是經過SHA-1加密演算法對此次提交計算的結果,可以唯一標識此次提交(重複的可能性可以忽略不計)。
(3).Author後面分別是提交的使用者名稱和電子郵件地址,它們之間用空格分隔。
(4).Date後面是提交的時間日期。
(5).Date垂直的下方中間以空格分隔的是提交資訊說明。
特別說明:如果提交歷史較多,可能顯示不完全,具體參閱git log提交歷史顯示不完全一章節。
git log指令的引數眾多,相應的列印結果也會有所不同,下面介紹一下常用的引數。
一.檢視最近的n此提交:
[Shell] 純文字檢視 複製程式碼$ git log -3
顯示最近三次提交。
二.檢視指定檔名的提交歷史記錄:
[Shell] 純文字檢視 複製程式碼$ git log readme.txt
檢視readme.txt檔案的歷史提交記錄,如果多個檔案,以空格分隔。
三.檢視指定目錄下檔案提交歷史記錄:
[Shell] 純文字檢視 複製程式碼$ git log dir/
檢視dir目錄下所有檔案的歷史提交記錄。
四.檢視指定分支或者標籤歷史提交記錄:
[Shell] 純文字檢視 複製程式碼$ git log v2.0..
檢視標籤標籤v2.0之後的歷史提交記錄(不包含v2.0)。
[Shell] 純文字檢視 複製程式碼$ git log ant..master
檢視master分支歷史提交記錄,但是不包含ant分支歷史記錄。
[Shell] 純文字檢視 複製程式碼$ git log master..ant
檢視ant分支歷史提交記錄,但是不包含master分支歷史記錄。
[Shell] 純文字檢視 複製程式碼$ git log master...ant
檢視master分支或者ant分支的歷史提交記錄。
五.查詢commit提交歷史提交記錄:
[Shell] 純文字檢視 複製程式碼$ git log commit
檢視commit之前的歷史提交記錄(包含commit自身)。
[Shell] 純文字檢視 複製程式碼$ git log commit1 commit2
檢視commit1與commit2之間的歷史提交記錄(包括兩者)。
[Shell] 純文字檢視 複製程式碼$ git log commit1..commit2
檢視commit1與commit2之間的歷史提交記錄(不包括commit1)。
六.--pretty引數:
通過不同的引數值以不同的格式顯示歷史提交記錄。
可以有的引數值如下:
(1).oneline。
(2).short。
(3).medium(預設值)。
(4).full。
(5).fuller。
(6).email。
(7).raw。
(8).format(此引數比較複雜後面會單獨介紹)。
比較常用的引數如oneline,日誌資訊將會在一行顯示:
[Shell] 純文字檢視 複製程式碼$ git log --pretty=oneline
程式碼執行效果截圖如下:
其他引數值就不一一演示了,感興趣的可以自行測試。
七.format引數值:
(1).%H:提交物件(commit)的完整雜湊字串。
(2).%h:提交物件的簡短雜湊字串。
(3).%T:樹物件(tree)的完整雜湊字串。
(4).%t:樹物件的簡短雜湊字串。
(5).%P:父物件(parent)的完整雜湊字串。
(6).%p:父物件的簡短雜湊字串。
(7).%an:作者(author)的名字。
(8).%ae:作者的電子郵件地址。
(9).%ad:作者修訂日期(可以用 -date= 選項定製格式)。
(10).%ar:作者修訂日期,按多久以前的方式顯示。
(11).%cn:提交者(committer)的名字。
(12).%ce:提交者的電子郵件地址。
(13).%cd:提交日期。
(14).%cr:提交日期,按多久以前的方式顯示。
(15).%s:提交說明。
程式碼例項如下:
[Shell] 純文字檢視 複製程式碼$ git log --pretty=format:"%an %ae"
程式碼執行效果截圖如下:
八.按照日期檢視提交歷史記錄:
(1).--after=:
[Shell] 純文字檢視 複製程式碼git log --after="2018-7-10”
顯示2018-7-10之後的commit(包含7月10號)。
日期還可以是相對日期,比如"1 week ago"和”yesterday"。
與--since功能相同。
(2).--before=:
[Shell] 純文字檢視 複製程式碼git log --before="2018-7-10”
顯示2018-7-10之前的commit(包含7月10號)。
與--until功能相同。
九.按照作者和郵箱檢視提交歷史記錄:
程式碼例項如下:
[Shell] 純文字檢視 複製程式碼$ git log --author="antzone"
上面會展示作者為"antzone"的歷史提交記錄。
特別說明:
(1).作者名不需要精確匹配,只需要包含即可。
(2).使用正則,例如git log --author="antozne\|softwhy”,搜尋antozne和softwhy提交的歷史記錄。
(3).--author不但可以搜尋作者,也可以搜尋郵箱。
十.按照提交描述資訊檢視歷史提交記錄:
首先看一段程式碼例項:
[Shell] 純文字檢視 複製程式碼$ git commit -m "新增一行刪除程式碼"
提交描述資訊就是-m後面規定的字串。
[Shell] 純文字檢視 複製程式碼$ git log --pretty=oneline --grep="add"
程式碼執行效果截圖如下:
預設是區分大小寫的,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log --pretty=oneline --grep="Add"
將不會查詢到前面程式碼所查詢到的提交歷史記錄,程式碼修改如下:
[Shell] 純文字檢視 複製程式碼$ git log --pretty=oneline --grep="Add" -i
程式碼執行效果截圖如下:
特別說明:如果同時使用--grep和--author篩選,需要附加--all-match引數。
十一.按照提交內容檢視歷史提交記錄:
實際應用中,可能需要查詢新增或者刪除指定的程式碼,使用-S"<string>"、-G"<string>"即可。
程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log -S"螞蟻部落"
可以篩選內容中含有"螞蟻部落"檔案所在的提交。
如果想使用正規表示式去匹配而不是字串, 那麼你可以使用-G代替-S。
特別說明:-S和-G之後沒有等號(=)。
十二.其他引數:
(1).-p :檢視提交時的補丁資訊。
(2).--stat :列出檔案的修改行數。
(3).--sortstat:只顯示--stat中最後行數修改新增移除的統計。
(4).--graph:以簡單的圖形方式列出提交記錄。
(5).--abbrev-commit:僅顯示 SHA-1 的前幾個字元,而非所有的 40 個字元。
(6).--relative-date:使用較短的相對時間顯示("1 weeks ago")。
(7).--name-only:僅在提交資訊後顯示已修改的檔案清單。
(8).--name-status:顯示新增、修改、刪除的檔案清單。
相關文章
- Git(7)-- 檢視提交歷史(git log 命令詳解)Git
- git log檢視提交歷史記錄Git
- git log提交歷史顯示不完全Git
- git檢視提交歷史Git
- Git 檢視提交歷史Git
- 修改 git repo 歷史提交的 authorGit
- 基於Git rebase修改歷史提交資訊Git
- git簡略形式檢視提交歷史Git
- 二、GIT基礎-檢視提交歷史Git
- 如何修剪git reflog歷史Git
- 【第八篇】- Git 檢視提交歷史Git
- git提交歷史在一行顯示Git
- Git提交歷史的修改刪除合併Git
- 檢視提交歷史 —— Git 學習筆記 11Git筆記
- git-清空歷史提交記錄(保留原倉庫)Git
- 儲存所有歷史提交資料下遷移git倉庫Git
- websocket 歷史及使用詳解Web
- [譯] Hexo git deployer 刪除了提交歷史記錄該怎麼整?HexoGit
- Git基本命令 -- 歷史Git
- git檢視歷史命令Git
- git重寫歷史記錄Git
- Git使用之GitHub提交一個專案詳解Github
- git修改歷史內容的方法Git
- Git 檢視檔案的歷史Git
- git 刪除歷史指定檔案Git
- Git reflog 引用日誌使用詳解Git
- Git改變歷史-章節筆記Git筆記
- 建立沒有commit提交歷史的新分支MIT
- 刪除Git倉庫所有提交歷史記錄,成為一個乾淨的新倉庫Git
- g4e基礎篇#6 瞭解Git歷史記錄Git
- Git 學習記錄之演變歷史Git
- Git 實用操作:重寫 Commit 歷史GitMIT
- 學習用工具來駕馭 Git 歷史Git
- Git.Framework 框架隨手記--歷史原因GitFramework框架
- Git——提交Git
- 『現學現忘』Git基礎 — 25、git log命令引數詳解Git
- Django-利用LogEntry生成操作歷史Django
- Git詳解Git