1 查看提交歷史
在提交了若干更新,又或者克隆了某個項目之后,我們想回顧下提交歷史,可使用 git log
命令。
以"simplegit"項目作為示例。運行下面的命令獲取項目:
$ git clone https://github.com/schacon/simplegit-progit
$ cd simplegit-progit/
$ git log
不傳入任何參數(shù)的默認情況下,git log
會按時間先后順序列出所有的提交,最近的更新排在最上面。這個命令會列出每個提交的 SHA-1 校驗和
、作者的名字
和電子郵件地址
、提交時間
以及提交說明
。
2 git log 常用選項
$ git log -p -<n>
$ git log -patch -<n>
這條命令會按補丁
的格式顯示每次提交所引入的差異,加上-<n>
可以限制顯示的日志條目數(shù)。該選項除了顯示基本信息之外,還附帶了每次提交的變化。
$ git log --stat
這個命令可以看到每次提交的簡略統(tǒng)計信息,并為git log
附帶一系列的總結(jié)性選項。
$ git log --pretty=oneline
git log --pretty
這個選項可以使用不同于默認格式的方式展示提交歷史。這個選項有一些內(nèi)建的子選項供我們使用。比如 oneline
會將每個提交放在一行顯示,在瀏覽大量的提交時非常有用。 另外還有 short
,full
和 fuller
選項,它們展示信息的格式基本一致,但是詳盡程度不一:
$ git log --pretty=format:"%h - %an, %ar : %s"
format
可以定制記錄的顯示格式。 這樣的輸出對后期提取分析格外有用——因為我們知道輸出的格式不會隨著 Git 的更新而發(fā)生改變:
git log --pretty=format 常用的選項:
選項 | 說明 |
---|---|
%H |
提交的完整哈希值 |
%h |
提交的簡寫哈希值 |
%T |
樹的完整哈希值 |
%t |
樹的簡寫哈希值 |
%P |
父提交的完整哈希值 |
%p |
父提交的簡寫哈希值 |
%an |
作者名字 |
%ae |
作者的電子郵件地址 |
%ad |
作者修訂日期(可以用 --date=選項 來定制格式) |
%ar |
作者修訂日期,按多久以前的方式顯示 |
%cn |
提交者的名字 |
%ce |
提交者的電子郵件地址 |
%cd |
提交日期 |
%cr |
提交日期(距今多長時間) |
%s |
提交說明 |
$ git log --pretty=format:"%h %s" --graph
當 oneline
或 format
與另一個 log
選項 --graph
結(jié)合使用時尤其有用。 這個選項添加了一些 ASCII 字符串來形象地展示我們的分支、合并歷史:
git log 的常用選項:
選項 | 說明 |
---|---|
-p |
按補丁格式顯示每個提交引入的差異。 |
--stat |
顯示每次提交的文件修改統(tǒng)計信息。 |
--shortstat |
只顯示 --stat 中最后的行數(shù)修改添加移除統(tǒng)計。 |
--name-only |
僅在提交信息后顯示已修改的文件清單。 |
--name-status |
顯示新增、修改、刪除的文件清單。 |
--abbrev-commit |
僅顯示 SHA-1 校驗和所有 40 個字符中的前幾個字符。 |
--relative-date |
使用較短的相對時間而不是完整格式顯示日期(比如“2 weeks ago”)。 |
--graph |
在日志旁以 ASCII 圖形顯示分支與合并歷史。 |
--pretty |
使用其他格式顯示歷史提交信息。可用的選項包括 oneline、short、full、fuller 和 format(用來定義自己的格式)。 |
--oneline |
--pretty=oneline --abbrev-commit 合用的簡寫。 |
3 限制輸出長度
類似 --since
和 --until
這種按照時間作限制的選項很有用。 例如,下面的命令會列出最近兩周的所有提交:
$ git log --since=2.weeks
可以是類似 "2008-01-15"
的具體的某一天,也可以是類似 "2 years 1 day 3 minutes ago"
的相對日期:
$ git log --since=2008-01-15
還可以過濾出匹配指定條件的提交。 用 --author
選項顯示指定作者的提交,用 --grep
選項搜索提交說明中的關(guān)鍵字。
Note | 我們可以指定多個 --author 和 --grep 搜索條件,這樣會只輸出匹配 任意 --author 模式和 任意 --grep 模式的提交。然而,如果你添加了 --all-match 選項, 則只會輸出匹配 所有 --grep 模式的提交。 |
---|
另一個非常有用的過濾器是 -S
,它接受一個字符串參數(shù),并且只會顯示那些添加或刪除了該字符串的提交。假設(shè)我們想找出添加或刪除了對某一個特定函數(shù)的引用的提交,可以調(diào)用:
$ git log --S function
最后一個很實用的 git log
選項是路徑(path), 如果只關(guān)心某些文件或者目錄的歷史提交,可以在git log
選項的最后指定它們的路徑。 因為是放在最后位置上的選項,所以用兩個短劃線(–)隔開之前的選項和后面限定的路徑名。文章來源:http://www.zghlxwxcb.cn/news/detail-806660.html
限制 git log 輸出的選項:文章來源地址http://www.zghlxwxcb.cn/news/detail-806660.html
選項 | 說明 |
---|---|
-<n> |
僅顯示最近的 n 條提交。 |
--since , --after
|
僅顯示指定時間之后的提交。 |
--until , --before
|
僅顯示指定時間之前的提交。 |
--author |
僅顯示作者匹配指定字符串的提交。 |
--committer |
僅顯示提交者匹配指定字符串的提交。 |
--grep |
僅顯示提交說明中包含指定字符串的提交。 |
-S |
僅顯示添加或刪除內(nèi)容匹配指定字符串的提交。 |
Tip | 隱藏合并提交按照我們代碼倉庫的工作流程,記錄中可能有為數(shù)不少的合并提交,它們所包含的信息通常并不多。 為了避免顯示的合并提交弄亂歷史記錄,可以為 log 加上 --no-merges 選項。 |
---|
到了這里,關(guān)于Git教程學習:04 查看提交歷史的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!