更新時(shí)間:2021-09-27 09:29:23 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1686次
在您創(chuàng)建了多個(gè)提交之后,或者如果您克隆了一個(gè)具有現(xiàn)有提交歷史的存儲(chǔ)庫(kù),您可能想要回顧一下發(fā)生了什么。執(zhí)行此操作的最基本和最強(qiáng)大的工具是git log命令。
這些示例使用了一個(gè)名為“simplegit”的非常簡(jiǎn)單的項(xiàng)目。要獲取項(xiàng)目,請(qǐng)運(yùn)行:
$ git clone https://github.com/schacon/simplegit-progit
當(dāng)你git log在這個(gè)項(xiàng)目中運(yùn)行時(shí),你應(yīng)該得到如下所示的輸出:
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
Remove unnecessary test
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
Initial commit
默認(rèn)情況下,不帶參數(shù),git log按時(shí)間倒序列出在該存儲(chǔ)庫(kù)中進(jìn)行的提交;也就是說(shuō),最近的提交首先出現(xiàn)。如您所見(jiàn),此Git命令列出了每個(gè)提交及其 SHA-1 校驗(yàn)和、作者姓名和電子郵件、寫(xiě)入日期和提交消息。
該git log命令提供了大量不同的選項(xiàng),可以準(zhǔn)確地向您顯示您要查找的內(nèi)容。在這里,我們將向您展示一些最受歡迎的。
更有用的選項(xiàng)之一是-por --patch,它顯示了每次提交中引入的差異(補(bǔ)丁輸出)。您還可以限制顯示的日志條目數(shù),例如使用-2僅顯示最后兩個(gè)條目。
$ git log -p -2
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
diff --git a/Rakefile b/Rakefile
index a874b73..8f94139 100644
--- a/Rakefile
+++ b/Rakefile
@@ -5,7 +5,7 @@ require 'rake/gempackagetask'
spec = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = "simplegit"
- s.version = "0.1.0"
+ s.version = "0.1.1"
s.author = "Scott Chacon"
s.email = "schacon@gee-mail.com"
s.summary = "A simple gem for using Git in Ruby code."
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
Remove unnecessary test
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index a0a60ae..47c6340 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -18,8 +18,3 @@ class SimpleGit
end
end
-
-if $0 == __FILE__
- git = SimpleGit.new
- puts git.show
-end
此選項(xiàng)顯示相同的信息,但在每個(gè)條目之后直接顯示差異。這對(duì)于代碼審查或快速瀏覽協(xié)作者添加的一系列提交期間發(fā)生的事情非常有用。您還可以將一系列匯總選項(xiàng)與git log. 例如,如果您想查看每次提交的一些縮寫(xiě)統(tǒng)計(jì)信息,您可以使用以下--stat選項(xiàng):
$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
Rakefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
Remove unnecessary test
lib/simplegit.rb | 5 -----
1 file changed, 5 deletions(-)
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
Initial commit
README | 6 ++++++
Rakefile | 23 +++++++++++++++++++++++
lib/simplegit.rb | 25 +++++++++++++++++++++++++
3 files changed, 54 insertions(+)
如您所見(jiàn),該--stat選項(xiàng)會(huì)在每個(gè)提交條目下方打印修改文件的列表、更改的文件數(shù)量以及這些文件中添加和刪除的行數(shù)。
另一個(gè)非常有用的選項(xiàng)是--pretty. 此選項(xiàng)將日志輸出更改為默認(rèn)格式以外的格式。一些預(yù)構(gòu)建的選項(xiàng)值可供您使用。oneline此選項(xiàng)的值將每個(gè)提交打印在一行上,這在您查看大量提交時(shí)非常有用。此外,short,full,和fuller值顯示在大致相同的格式,但分別與更少或更多的信息,輸出:
$ git log --pretty=oneline
ca82a6dff817ec66f44342007202690a93763949 Change version number
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Remove unnecessary test
a11bef06a3f659402fe7563abf99ad00de2209e6 Initial commit
最有趣的選項(xiàng)值是format,它允許您指定自己的日志輸出格式。這在您為機(jī)器解析生成輸出時(shí)特別有用——因?yàn)槟鞔_指定格式,您知道它不會(huì)隨著 Git 的更新而改變:
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : Change version number
085bb3b - Scott Chacon, 6 years ago : Remove unnecessary test
a11bef0 - Scott Chacon, 6 years ago : Initial commit
在oneline和format期權(quán)值與另一個(gè)特別有用log叫選項(xiàng)--graph。此選項(xiàng)添加了一個(gè)漂亮的小 ASCII 圖形,顯示您的分支和合并歷史記錄:
git log --pretty=format:"%h %s" --graph
* 2d3acf9 Ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Add method for getting the current branch
* | 30e367c Timeout code and tests
* | 5a09431 Add timeout protection to grit
* | e1193f8 Support for heads with slashes in them
|/
* d6016bc Require time for xmlschema
* 11d191e Merge branch 'defunkt' into local
除了輸出格式選項(xiàng)之外,git log還有許多有用的限制選項(xiàng);也就是說(shuō),讓您只顯示提交子集的選項(xiàng)。您已經(jīng)看到了一個(gè)這樣的選項(xiàng) --2選項(xiàng),它只顯示最后兩次提交。事實(shí)上,你可以做-<n>, wheren是任何整數(shù)來(lái)顯示最后一次n提交。實(shí)際上,您不太可能經(jīng)常使用它,因?yàn)槟J(rèn)情況下 Git 將所有輸出都通過(guò)尋呼機(jī)進(jìn)行管道傳輸,因此您一次只能看到一頁(yè)日志輸出。
但是,諸如--since和 之類的限時(shí)選項(xiàng)--until非常有用。例如,此命令獲取最近兩周的提交列表:
$ git log --since=2.weeks
此命令適用于多種格式 - 您可以指定特定日期,例如"2008-01-15",或相對(duì)日期,例如"2 years 1 day 3 minutes ago"。
您還可以過(guò)濾列表以匹配某些搜索條件的提交。該--author選項(xiàng)允許您過(guò)濾特定作者,該--grep選項(xiàng)允許您在提交消息中搜索關(guān)鍵字。
另一個(gè)真正有用的過(guò)濾器是-S選項(xiàng)(通俗地稱為 Git 的“pickaxe”選項(xiàng)),它接受一個(gè)字符串并僅顯示那些更改了該字符串出現(xiàn)次數(shù)的提交。例如,如果您想查找添加或刪除對(duì)特定函數(shù)的引用的最后一次提交,您可以調(diào)用:
$ git log -S function_name
git log作為過(guò)濾器傳遞的最后一個(gè)真正有用的選項(xiàng)是路徑。如果指定目錄或文件名,則可以將日志輸出限制為對(duì)這些文件進(jìn)行更改的提交。這始終是最后一個(gè)選項(xiàng),通常以雙破折號(hào) ( --)開(kāi)頭,以將路徑與選項(xiàng)分開(kāi):
$ git log -- path/to/file
以上就是關(guān)于“Git查看提交歷史”的介紹,如果大家想了解更多,可以關(guān)注動(dòng)力節(jié)點(diǎn)Git教程,課程內(nèi)容適合初學(xué)者學(xué)習(xí),希望對(duì)大家有所幫助哦。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)