簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-annotate 最後更新於 2.50.0

名稱

git-annotate - 使用提交資訊註解檔案行

概要

git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>

描述

使用引入該行的提交資訊來註解給定檔案中的每一行。可選擇從給定修訂版本進行註解。

此命令與 git-blame[1] 之間的唯一區別是它們使用了略微不同的輸出格式,並且此命令僅為了向後相容以支援現有指令碼而存在,同時為來自其他SCM系統的人提供一個更熟悉的命令名稱。

選項

-b

為邊界提交顯示空白 SHA-1。這也可以透過 blame.blankBoundary 配置選項進行控制。

--root

不將根提交視為邊界。這也可以透過 blame.showRoot 配置選項進行控制。

--show-stats

在 blame 輸出的末尾包含額外統計資訊。

-L <start>,<end>
-L :<funcname>

僅註解由 <start>,<end> 或函式名正則表示式 <funcname> 給出的行範圍。可以指定多次。允許範圍重疊。

<start><end> 是可選的。-L <start>-L <start>, 表示從 <start> 到檔案末尾的範圍。-L ,<end> 表示從檔案開頭到 <end> 的範圍。

<start><end> 可以採用以下形式之一

  • 數字

    如果 <start><end> 是一個數字,它指定一個絕對行號(行從 1 開始計數)。

  • /正則表示式/

    此形式將使用匹配給定 POSIX 正則表示式的第一行。如果 <start> 是正則表示式,它將(如果存在)從前一個 -L 範圍的末尾開始搜尋,否則從檔案開頭開始搜尋。如果 <start>^/regex/,它將從檔案開頭開始搜尋。如果 <end> 是正則表示式,它將從 <start> 給定的行開始搜尋。

  • +偏移量 或 -偏移量

    這僅對 <end> 有效,並將指定 <start> 給定行之前或之後的行數。

如果 :<funcname> 用來代替 <start><end>,它是一個正則表示式,表示從第一條匹配 <funcname> 的函式名行開始,直到下一條函式名行的範圍。:<funcname> (如果存在)從前一個 -L 範圍的末尾開始搜尋,否則從檔案開頭開始搜尋。^:<funcname> 從檔案開頭開始搜尋。函式名確定方式與 git diff 處理補丁塊頭(hunk header)的方式相同(參見 gitattributes[5] 中的 定義自定義塊頭)。

-l

顯示完整修訂版本號(預設:關閉)。

-t

顯示原始時間戳(預設:關閉)。

-S <revs-file>

使用 revs-file 中的修訂版本,而不是呼叫 git-rev-list[1]

--reverse <rev>..<rev>

向前而非向後遍歷歷史。此選項不是顯示某行首次出現的修訂版本,而是顯示該行最後一次存在的修訂版本。這需要一個修訂版本範圍,如 START..END,其中要 blame 的路徑存在於 START 中。為方便起見,git blame --reverse START 被視為 git blame --reverse START..HEAD

--first-parent

在遇到合併提交時,僅跟蹤第一個父提交。此選項可用於確定某行何時引入到特定整合分支,而不是何時引入到整個歷史記錄中。

-p
--porcelain

以機器可讀的格式顯示。

--line-porcelain

顯示 porcelain 格式,但輸出每行的提交資訊,而不僅僅是首次引用提交時。這意味著隱含了 --porcelain 選項。

--incremental

以機器可讀的格式增量顯示結果。

--encoding=<encoding>

指定用於輸出作者姓名和提交摘要的編碼。將其設定為 none 會使 blame 輸出未轉換的資料。更多資訊請參見 git-log[1] 手冊頁中關於編碼的討論。

--contents <file>

使用指定檔案的內容進行註解,如果指定了 <rev> 則從該修訂版本開始,否則從 HEAD 開始。您可以指定 - 來使命令從標準輸入讀取檔案內容。

--date <format>

指定用於輸出日期的格式。如果未提供 --date 選項,將使用 blame.date 配置變數的值。如果 blame.date 配置變數也未設定,則使用 iso 格式。有關支援的值,請參見 git-log[1] 中關於 --date 選項的討論。

--[no-]progress

當連線到終端時,進度狀態預設在標準錯誤流上報告。即使未連線到終端,此標誌也能啟用進度報告。不能將 --progress--porcelain--incremental 一起使用。

-M[<num>]

檢測檔案內移動或複製的行。當一次提交移動或複製一個行塊時(例如,原始檔案有 A 然後 B,而提交將其更改為 B 然後 A),傳統的 blame 演算法只會注意到移動的一半,通常將上移的行(即 B)歸咎於父提交,並將下移的行(即 A)歸咎於子提交。使用此選項,透過執行額外的檢查遍數,這兩組行都被歸咎於父提交。

<num> 是可選的,但它是 Git 必須檢測到的在檔案內移動/複製的字母數字字元數的下限,以便將這些行與父提交關聯。預設值為 20。

-C[<num>]

除了 -M 之外,還檢測從同一提交中修改的其他檔案移動或複製的行。這在您重構程式並將程式碼在檔案之間移動時很有用。當此選項給定兩次時,命令還會查詢建立檔案提交中來自其他檔案的副本。當此選項給定三次時,命令還會查詢任何提交中來自其他檔案的副本。

<num> 是可選的,但它是 Git 必須檢測到的在檔案之間移動/複製的字母數字字元數的下限,以便將這些行與父提交關聯。預設值為 40。如果指定了多個 -C 選項,則最後一個 -C 的 <num> 引數將生效。

--ignore-rev <rev>

在分配 blame 時忽略該修訂版本所做的更改,就像這些更改從未發生過一樣。被忽略提交更改或新增的行將被歸咎於更改該行或附近行的前一個提交。此選項可以指定多次以忽略多個修訂版本。如果設定了 blame.markIgnoredLines 配置選項,則被忽略提交更改並歸因於另一個提交的行將在 blame 輸出中標記為 ?。如果設定了 blame.markUnblamableLines 配置選項,則被忽略提交觸及但我們無法歸因於其他修訂版本的行將標記為 *。在 porcelain 模式下,我們將分別在換行符上列印 ignoredunblamable

--ignore-revs-file <file>

忽略 file 中列出的修訂版本,其格式必須與 fsck.skipList 相同。此選項可以重複,這些檔案將在處理任何透過 blame.ignoreRevsFile 配置選項指定的檔案之後進行處理。空檔名 "" 將清除先前處理過的檔案中修訂版本列表。

--color-lines

如果行註解與前一行來自同一提交,則以不同顏色顯示預設格式的行註解。這使得區分由不同提交引入的程式碼塊變得更容易。顏色預設為青色,可以透過 color.blame.repeatedLines 配置選項進行調整。

--color-by-age

根據行在預設格式中的“年齡”來為行註解著色。color.blame.highlightRecent 配置選項控制每個年齡範圍使用的顏色。

-h

顯示幫助資訊。

另請參閱

GIT

Git[1] 套件的一部分

scroll-to-top