簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-annotate 最後更新於 2.52.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> 可以採用以下形式之一

  • <number>

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

  • /<regex>/

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

  • +<offset>-<offset>

    這僅對 <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 選項的討論。

--progress
--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] 套件的一部分