天天看點

git 使用詳解(5)-- get log 檢視送出曆史【轉】

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

<a href="http://blog.csdn.net/wh_19910525/article/details/7468549#t0">限制輸出長度</a>

<a href="http://blog.csdn.net/wh_19910525/article/details/7468549#t1">使用圖形化工具查閱送出曆史</a>

 <code>git log</code>  檢視 送出曆史

接下來的例子會用我專門用于示範的 simplegit 項目,運作下面的指令擷取該項目源代碼:

然後在此項目中運作 <code>git log</code>,應該會看到下面的輸出:

預設不用任何參數的話,<code>git log</code> 會按送出時間列出所有的更新,最近的更新排在最上面。看到了嗎,每次更新都有一個 SHA-1 校驗和、作者的名字 和 電子郵件位址、送出時間,最後縮進一個段落顯示送出說明。

<code>git log</code> 有許多選項可以幫助你搜尋感興趣的送出,接下來我們介紹些最常用的。

我們常用 <code>-p</code> 選項展開顯示每次送出的内容差異,用 <code>-2</code> 則僅顯示最近的兩次更新:

在做代碼審查,或者要快速浏覽其他協作者送出的更新都作了哪些改動時,就可以用這個選項。此外,還有許多摘要選項可以用,比如 <code>--stat</code>,僅顯示簡要的增改行數統計:

每個送出都列出了修改過的檔案,以及其中添加和移除的行數,并在最後列出所有增減行數小計。還有個常用的<code>--pretty</code> 選項,可以指定使用完全不同于預設格式的方式展示送出曆史。比如用<code>oneline</code> 将 每個送出 放在一行顯示,這在送出數很大時非常有用。另外還有<code>short</code>,<code>full</code> 和<code>fuller</code> 可以用,展示的資訊或多或少有些不同,請自己動手實踐一下看看效果如何。

但最有意思的是 <code>format</code>,可以定制要顯示的記錄格式,這樣的輸出便于後期程式設計提取分析,像這樣:

表 2-1 列出了常用的格式占位符寫法及其代表的意義。

你一定奇怪_作者(author)_和_送出者(committer)_之間究竟有何差别,其實作者指的是實際作出修改的人,送出者指的是最後将此工作成果送出到倉庫的人。是以,當你為某個項目釋出更新檔,然後某個核心成員将你的更新檔并入項目時,你就是作者,而那個核心成員就是送出者。我們會在第五章再詳細介紹兩者之間的細微差别。

用 oneline 或 format 時結合 <code>--graph</code> 選項,可以看到開頭多出一些 ASCII 字元串表示的簡單圖形,形象地展示了每個送出所在的分支及其分化衍合情況。在我們之前提到的 Grit 項目倉庫中可以看到:

以上隻是簡單介紹了一些 <code>git log</code> 指令支援的選項。表 2-2 還列出了一些其他常用的選項及其釋義。

除了定制輸出格式的選項之外,<code>git log</code> 還有許多非常實用的限制輸出長度的選項,也就是隻輸出部分送出資訊。之前我們已經看到過 <code>-2</code> 了,它隻顯示最近的兩條送出,實際上,這是 <code>-&lt;n&gt;</code> 選項的寫法,其中的 <code>n</code> 可以是任何自然數,表示僅顯示最近的若幹條送出。不過實踐中我們是不太用這個選項的,Git 在輸出所有送出時會自動調用分頁程式(less),要看更早的更新隻需翻到下頁即可。

另外還有按照時間作限制的選項,比如 <code>--since</code> 和 <code>--until</code>。下面的指令列出所有最近兩周内的送出:

你可以給出各種時間格式,比如說具體的某一天(“2008-01-15”),或者是多久以前(“2 years 1 day 3 minutes ago”)。

還可以給出若幹搜尋條件,列出符合的送出。用 <code>--author</code> 選項顯示指定作者的送出,用 <code>--grep</code> 選項搜尋送出說明中的關鍵字。(請注意,如果要得到同時滿足這兩個選項搜尋條件的送出,就必須用<code>--all-match</code> 選項。)

如果隻關心某些檔案或者目錄的曆史送出,可以在 <code>git log</code> 選項的最後指定它們的路徑。因為是放在最後位置上的選項,是以用兩個短劃線(<code>--</code>)隔開之前的選項和後面限定的路徑名。

表 2-3 還列出了其他常用的類似選項。

來看一個實際的例子,如果要檢視 Git 倉庫中,2008 年 10 月期間,Junio Hamano 送出的但未合并的測試腳本(位于項目的 t/ 目錄下的檔案),可以用下面的查詢指令:

Git 項目有 20,000 多條送出,但我們給出搜尋選項後,僅列出了其中滿足條件的 6 條。

有時候圖形化工具更容易展示曆史送出的變化,随 Git 一同釋出的 gitk 就是這樣一種工具。它是用 Tcl/Tk 寫成的,基本上相當于 <code>git log</code> 指令的可視化版本,凡是<code>git log</code> 可以用的選項也都能用在 gitk 上。在項目工作目錄中輸入 gitk 指令後,就會啟動圖 2-2 所示的界面。

git 使用詳解(5)-- get log 檢視送出曆史【轉】

圖 2-2. gitk 的圖形界面

上半個視窗顯示的是曆次送出的分支祖先圖譜,下半個視窗顯示目前點選的送出對應的具體差異。

本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/sky-heaven/p/6001226.html,如需轉載請自行聯系原作者