分享方式:


Difference 命令

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

Team Foundation 版本控制 (TFVC) difference 命令會比較和可能顯示兩個檔案、兩個資料夾中的檔案,或擱置集和本機或伺服器檔案之間的差異。

必要條件

若要使用 difference 命令,您必須擁有所有指定項目設為 [允許] 的 [讀取] 許可權。 如需詳細資訊,請參閱 預設 TFVC 許可權

語法

tf diff[erence] itemspec [/version:versionspec] [/type:filetype] 
[/format:format [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] 
[/options][/noprompt][/login:username,[password]]
tf diff[erence] itemspec itemspec2 [/type:filetype] [/format: format] 
[/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] [/shelveset:shelvesetname[;shelvesetowner]] 
shelveset_itemspec [/type:filetype] 
[/format: format] [/ignorespace] [/ignoreeol] [/ignorecase] 
[/recursive] [/options] [/noprompt][/login:username,[password]]
tf diff[erence] /configure

參數

引數

Argument

說明

<itemspec>

必要。 指定要比較的專案。 如果未指定任何版本或路徑,則會假設目前的工作區版本。 接受本機和 Azure DevOps 伺服器路徑。

如需 TFVC 如何剖析 itemspec 以判斷哪些專案在範圍內的詳細資訊,請參閱 使用 Team Foundation 版本控制命令

命令 difference 不支援通配符。

此參數無法與 /shelveset 選項結合。

<itemspec2>

選擇性。 要比較的專案 itemspec 。 如果您沒有提供第二個 itemspec,則會使用專案的最新 Azure DevOps 伺服器版本。

<filetype>

提供 選項的值 /type 。 您可以指定 binarytext 和代碼頁編號或代碼頁的易記名稱。

<format>

與 選項搭配 /format 使用,以指定下列其中一種類型的輸出格式:

  • Visual
  • Brief
  • Context
  • RCS
  • SS
  • SS_SideBySide
  • SS_Unix
  • Unified
  • Unix

這些輸出格式會在一節中說明。

<versionspec>

選項的使用者提供值 /version 。 如需 TFVC 如何剖析版本規格以判斷其範圍內哪些專案的詳細資訊,請參閱 使用 Team Foundation 版本控制命令

<shelvesetowner>

依使用者名稱識別擱置集的擁有者。 如果未提供此參數的值,則會假設目前的使用者。

<shelvesetname>

指定擱置集的名稱。 只要不同的用戶擁有每個擱置集,就可以在執行 TFVC 的伺服器上建立多個具有相同名稱的擱置集。

<shelveset_itemspec>

指定要與基底擱置集版本比較的資料夾或檔案名稱。

<username>

提供 選項的值 /login 。 您可以將使用者名稱值指定為 DOMAIN\usernameusername

選項。

選項

說明

/type

覆寫任何偵測到的編碼,並使用指定的編碼將檔案呈現至差異引擎。

/version

指定要比較的檔案或資料夾版本。 如果您未提供 versionspec,TFVC 預設會使用工作區版本。

您可以藉由將分號和版本規範附加至每個檔名結尾,而不是使用 /version 旗標來指定版本。

/format

指定自變數所 format 指定的輸出格式。

/ignorespace

不會反白顯示比較檔案之間的空格符差異。

/ignoreeol

忽略兩個檔案或檔案版本中新行字元之間的差異。 /ignoreeol 的運作方式與 ignorespace不同,它會以相同方式處理八個空格。 不過,如果您使用 選項,/ignoreeol而檔案 A 在未變更的文字區域之間有兩個新的行字元,而檔案 B 有一個,結果會顯示為差異。 如果這兩個檔案只有一個新行,但 檔案 A 會當做新行使用 \r\n ,而 檔案 B 會使用 \n,此選項 /ignoreeol 會忽略為差異。

/ignorecase

不會反白顯示比較檔案之間的字母大小寫差異。

/recursive

比較目前資料夾與其所有子資料夾之間的差異。

/options

指定要叫用 difference之工具的選項字串。 如需詳細資訊,請參閱 將檔類型與差異工具 產生關聯和 將檔類型與合併工具產生關聯。

/shelveset

指定要與擱置集所依據的 Azure DevOps 伺服器版本進行比較的擱置集。

此選項無法與 itemspec 自變數結合。 若要比較個別的擱置集專案,您可以提供 shelveset_itemspec

/noprompt

隱藏此作業完成期間所顯示的任何對話框。

/configure

從 Visual Studio 使用者介面叫用 [ 設定使用者工具] 對話方塊。 如需詳細資訊,請參閱 將檔類型與差異工具產生關聯。

/login

指定要使用 TFVC 驗證使用者的使用者名稱和密碼。

備註

注意

您可以在命令列輸入 tf difftf difference 以執行此命令。

您可以使用 difference 命令來比較 ,並盡可能在下列兩者之間顯示差異:

  • 兩個不同的檔案或兩個相同檔案的版本。

  • 資料夾中的一或多個專案。

  • 一個、部分或所有項目位於 Azure DevOps 伺服器上的擱置集。

您可以使用 difference 命令來比較版本化和非版本化檔案。

TFVC 會依類型分類所有檔案。 只要這兩個檔案具有相同的編碼方式,就可以合併和比較文本檔,並排和逐行比較。 如果您想要比較編碼方式不相同的兩個檔案,您可以使用 選項暫時遮罩或覆寫檔案 /type 的編碼屬性。

可以比較二進位檔,但無法合併。 當您將一或多個二進位檔傳遞至 difference 命令時,TFVC 會指出它與正在比較的項目之間是否存在差異。 如需 TFVC 如何區分和處理不同類型檔案的詳細資訊,請參閱 管理文件類型

如果您指定兩個檔名,則會比較這兩個檔案。 您可以藉由將分號和版本規範附加至每個檔名結尾,而不是使用 /version 旗標來指定版本。

如果您只將一個 itemspec 傳遞給差異命令:

  • 如果您未提供 versionspec,則專案目前的工作區版本預設會與基底工作區版本進行比較。 例如,tf difference header.h比較目前版本的 header.h 與 header.h 所依據的版本

  • 如果您在 中納入 versionspec itemspec,例如 tf difference header.h;LBeta1,TFVC 會將該版本與磁碟上的目前工作區版本進行比較。

  • 如果您指定之類的 /version:C1~C4版本範圍,則會比較範圍中兩個端點的檔案版本。

如需如何使用 tf 命令行公用程式的詳細資訊,請參閱 使用Team Foundation版本控制命令

輸出格式類型

搭配 format 選項使用的 /format 參數會指定許多不同的輸出格式。 下列輸出類型可供使用:

  • Visual 格式類型會開啟外部差異應用程式。 根據預設, 會啟動diffmerge.exe

  • Brief 格式會列印要比較的檔案是否不同。

  • Context format 提供檔案差異的內容行。 此格式衍生自 UNIX 型 diff -c 輸出格式。

  • RCS format 與 /format:unix類似,但未提供內容行。 未提供檔案結尾遺漏行標記結尾的特殊手法。

  • SS是 Visual Source 的預設差異輸出格式 保管庫。 如需詳細資訊,請參閱 Diff (命令行)

  • SS_SideBySide是 Visual Source 的預設並存輸出格式 保管庫。

  • SS_Unix 類似輸出 /format:unix 格式,但 /format:ss_unix 包含內容列, /format:unix 但不包含 。

  • Unified format 衍生自 UNIX 型 diff -u 輸出格式。 /format:context 會重複差異字串之間的相同內容行,但 /format:unified 不會重複。

    Unified 只有當下一個差異字串的距離大於內容行數目時,format 才會產生新的統一差異字串 (@@ ... @@) 行。

  • Unix 輸出類型衍生自 UNIX 型 diff 命令輸出格式。

    輸出 Unix 格式是以下欄位方式建構:

    <metadataline>
    "< " line prefix for lines from the first file
    "---" line
    "> " line prefix for lines from the second file
    
    <metadataline> can be one of these possibilities:
    #a#,# -- add lines from line # in file1 into file2 at lines #->#
    #,#d# -- delete lines from line # -> # in file 1 from file2 at line #
    #,#c#,# -- change lines from line # -> # in file1 into the lines in file2 at line # -> #
    
    # signs separated by commas indicate a line range.
    # signs before the character indicate line numbers in the first file.
    # signs after the character indicate line numbers in the second file.
    
    /// No end of line marker at the end of the file:
    /// \ No newline at end of file
    

範例

下列範例會顯示本機版本的 314.cs 與工作區版本的314.cs差異,也就是從 Azure DevOps 伺服器取出的檔案版本。

c:\projects>tf difference 314.cs

下列範例會顯示 src 資料夾中已變更的所有檔案,但不會顯示 src 子資料夾中已變更的檔案。

c:\projects>tf difference src /format:visual

下列範例會顯示變更集 3 和變更集 8 1254.cs之間的差異。

c:\projects>tf difference /version:C3~C8 1254.cs

下列範例顯示屬於標籤release314.cs 版本與屬於 changeset 3200 的版本之間的差異。

c:\projects>tf difference 314.cs;Lrelease 314.cs;C3200

-或-

c:\projects>tf difference 314.cs;Lrelease~C3200

下列範例顯示e271.cs版本之間的差異,即名為 Pat 的使用者擱置在擱置集PeerCodeReview8和根據其變更的基礎擱置集版本。 輸出也會顯示使用者擱置時擱置的變更 e271.cs 類型。

c:\projects> tf difference /shelveset:PeerCodeReview8;Pat e271.cs

下列範例會顯示擱置集中的所有檔案 PeerCodeReview2 與這些檔案的基底擱置集版本之間的差異。

c:\projects> tf difference /shelveset:PeerCodeReview2