Git
English ▾ 主題 ▾ 最新版本 ▾ git-annotate 上次更新於 2.41.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 開始計數)。

  • /regex/

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

  • +偏移量或 -偏移量

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

如果在 <start><end> 的位置給定 :<funcname>,則它是表示從符合 <funcname> 的第一個 funcname 行到下一個 funcname 行的範圍的正規表示式。:<funcname> 從上一個 -L 範圍的末尾開始搜尋(如果有),否則從檔案開頭開始搜尋。^:<funcname> 從檔案開頭開始搜尋。函數名稱的確定方式與 git diff 計算修補程式區塊標頭的方式相同(請參閱 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>,則從 <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 配置選項,則我們無法將其歸咎於其他修訂版本的忽略的提交觸及的那些行將標記為 *

--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