回顧下提交歷史。 完成這個任務最簡單而又有效的工具是 git log 命令。
git log
默認不用任何參數的話,git log 會按提交時間列出所有的更新,最近的更新排在最上面。
這個命令會列出每個提交的 SHA-1 校驗和、作者的名字和電子郵件地址、提交時間以及提交說明
常用的參數
1、一個常用的選項是 -p,用來顯示每次提交的內容差異。你也可以加上 -2 來僅顯示最近兩次提交
git log -p -2
該選項除了顯示基本信息之外,還附帶了每次 commit 的變化。
2、看到每次提交的簡略的統計信息,你可以使用 --stat 選項:
git log --stat
--stat 選項在每次提交的下面列出所有被修改過的文件、有多少文件被修改了以及被修改過的文件的哪些行被移除或是添加了。
3、--pretty。 這個選項可以指定使用不同於默認格式的方式展示提交歷史。用 oneline 將每個提交放在一行顯示,查看的提交數很大時非常有用。 另外還有 short,full 和 fuller 可以用,展示的信息或多或少有些不同
git log --pretty=oneline
format,可以定製要顯示的記錄格式。
git log --pretty=format:"%h - %an, %ar : %s"
%H |
提交對象(commit)的完整哈希字串 |
%h |
提交對象的簡短哈希字串 |
%T |
樹對象(tree)的完整哈希字串 |
%t |
樹對象的簡短哈希字串 |
%P |
父對象(parent)的完整哈希字串 |
%p |
父對象的簡短哈希字串 |
%an |
作者(author)的名字 |
%ae |
作者的電子郵件地址 |
%ad |
作者修訂日期(可以用 --date= 選項定製格式) |
%ar |
作者修訂日期,按多久以前的方式顯示 |
%cn |
提交者(committer)的名字 |
%ce |
提交者的電子郵件地址 |
%cd |
提交日期 |
%cr |
提交日期,按多久以前的方式顯示 |
%s |
提交說明 |
4、當 oneline 或 format 與另一個 log 選項 --graph 結合使用時尤其有用。 這個選項添加了一些ASCII字符串來形象地展示你的分支、合併歷史
git log --pretty=format:"%h %s" --graph
-p |
按補丁格式顯示每個更新之間的差異。 |
--stat |
顯示每次更新的文件修改統計信息。 |
--shortstat |
只顯示 --stat 中最後的行數修改添加移除統計。 |
--name-only |
僅在提交信息後顯示已修改的文件清單。 |
--name-status |
顯示新增、修改、刪除的文件清單。 |
--abbrev-commit |
僅顯示 SHA-1 的前幾個字符,而非所有的 40 個字符。 |
--relative-date |
使用較短的相對時間顯示(比如,“2 weeks ago”)。 |
--graph |
顯示 ASCII 圖形表示的分支合併歷史。 |
--pretty |
使用其他格式顯示歷史提交信息。可用的選項包括 oneline,short,full,fuller 和 format(後跟指定格式)。 |
5、限制輸出長度
1)-<n> 選項的寫法,其中的 n 可以是任何整數,表示僅顯示最近的若干條提交。
2)按照時間作限制的選項,比如 --since 和 --until 也很有用。
git log --since=2.weeks //列出所有最近兩週內的提交
3)用 --author 選項顯示指定作者的提交,用 --grep 選項搜索提交說明中的關鍵字。
(請注意,如果要得到同時滿足這兩個選項搜索條件的提交,就必須用 --all-match 選項。否則,滿足任意一個條件的提交都會被匹配出來)
6、篩選選項是 -S,可以列出那些添加或移除了某些字符串的提交。
git log -Sfunction_name //找出添加或移除了某一個特定函數的引用的提交
7、如果只關心某些文件或者目錄的歷史提交,可以在 git log 選項的最後指定它們的路徑。
選項 |
說明 |
-(n) |
僅顯示最近的 n 條提交 |
--since, --after |
僅顯示指定時間之後的提交。 |
--until, --before |
僅顯示指定時間之前的提交。 |
--author |
僅顯示指定作者相關的提交。 |
--committer |
僅顯示指定提交者相關的提交。 |
--grep |
僅顯示含指定關鍵字的提交 |
-S |
僅顯示添加或移除了某個關鍵字的提交 |