Difference 命令

比較兩個檔案、兩個資料夾中的檔案,或擱置集與本機或伺服器檔案,並顯示兩者間的差異 (如有可能)。

必要的使用權限

若要使用 difference 命令,您必須將所有指定之項目的 [讀取] 權限設定為 [允許]。 如需詳細資訊,請參閱Team Foundation Server 使用權限

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

參數

引數

描述

itemspec

必要項。 指定要比較的項目。 如果沒有指定版本或路徑,就會採用「目前的工作區版本」(Current Workspace Version)。 本機與 Team Foundation 版本控制伺服器路徑均可接受。

如需 Team Foundation 如何剖析 itemspecs 以便判斷哪些項目位於範圍內的詳細資訊,請參閱命令列語法 (版本控制)

difference 命令不支援萬用字元。

這個參數無法與 /shelveset 選項合併使用。

Itemspec2

選擇項。 要與 itemspec 進行比較的項目。 如果未提供第二個 itemspec,則將使用項目的最新 Team Foundation 版本控制伺服器版本。

Filetype

提供 /type 選項的值。 您可以將字碼頁指定為 "binary" 或 "text",也可為其指定字碼頁編號或易記名稱。

Format

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

  • Visual

  • Brief

  • 內容

  • RCS

  • SS

  • SS_SideBySide

  • SS_Unix

  • Unified

  • Unix

這些輸出格式會在本主題的<備註>章節中說明。

Versionspec

/version 選項的使用者提供值。 如需 Team Foundation 如何剖析版本規格以便判斷哪些項目位於範圍內的詳細資訊,請參閱命令列語法 (版本控制)

Shelvesetowner

藉由使用者名稱辨別擱置集的擁有人。 如果未提供這個參數的值,就會採用目前的使用者。

Shelvesetname

指定擱置集的名稱。 您可以在執行 Team Foundation Server 的伺服器上建立多個名稱相同的擱置集,只要每個擱置集是由不同的使用者所擁有。

Shelveset_itemspec

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

username

提供 /login 選項的值。 您可以將使用者名稱值指定成網域\ 使用者名稱或使用者名稱的格式。

選項

描述

/type

覆寫任何偵測到的編碼方式,並使用指定的編碼方式向差異引擎代表檔案。

/version

指定要比較的檔案或資料夾的版本。 依預設值,如果沒有提供 versionspec,Team Foundation 會使用工作區版本。

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

/format

指定由 format 引數所指定的輸出格式。

/ignorespace

不反白顯示比較檔案之間的 white-space 差異。

/ignoreeol

忽略兩個檔案或檔案版本中的換行字元之間的差異。 /ignoreeol/ignoreSpace 的作業方式不同。 /ignorespace 會將 8 個空格當成 1 個處理。 不過,如果使用 /ignoreeol 選項,檔案 A 在未變更的文字區域之間有兩個換行字元,而檔案 B 有一個,則結果會顯示為一個差異。 如果兩個檔案都只有一個換行,但檔案 A 使用 \r\n 當成新行,而檔案 B 使用 \n,則 /ignoreEOL 選項會忽略這點,不會將其當做差異。

/ignorecase

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

/recursive

比較現有資料夾及其所有子資料夾之間的差異。

/options

指定由 diff 所叫用工具的選項字串。 如需詳細資訊,請參閱 使檔案類型與差異工具產生關聯使檔案類型與合併工具產生關聯

/shelveset

指定擱置集,以與該擱置集所根據的 Team Foundation 版本控制伺服器版本進行比較。

這個選項無法與 itemspec 引數合併使用。 若要比較個別的擱置集項目,您可以提供 shelveset_itemspec。

/noprompt

隱藏在完成此作業時要顯示的任何對話方塊。

/configure

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

/login

指定使用者名稱和密碼,以便透過 Team Foundation Server 驗證使用者。

備註

注意事項注意事項

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

您可以使用 difference 命令以進行比較並顯示之間的差異 (如有可能):

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

  • 資料夾中的一或多個項目。

  • Team Foundation Server 上的擱置集中的一個、某些或所有項目。

您可以使用 difference 命令比較已建立版本和沒有建立版本的檔案。

Team Foundation 會依類型將所有檔案分類。 文字檔可以並排而逐行地合併及比較,只要兩個檔案都具有相同的編碼方式即可。 如果想要比較編碼方式不同的兩個檔案,可以藉由使用 /type 選項,暫時將檔案的編碼方式屬性加以遮罩或覆寫。 二進位檔案可以比較,但不能合併。 當您將一或多個二進位檔案傳遞到 difference 命令時,Team Foundation 會指出在它及要比較的項目之間是否有差異存在。 如需 Team Foundation 如何區分及處理不同類型檔案的詳細資訊,請參閱管理檔案類型

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

如果只傳遞一個 itemspec 給 difference 命令:

  • 如果未提供版本規格,則根據預設,項目目前的工作區版本會與基底工作區版本比較。 例如,tf difference header.h 會將 header.h 目前的版本與做為 header.h 基礎的版本做比較。

  • 如果在項目規格中包含版本規格 (例如,tf difference header.h;LBeta1),Team Foundation 就會將該版本與磁碟上目前的工作區版本進行比較。

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

如需如何尋找 tf 命令列公用程式的詳細資訊,請參閱 Tf 命令列公用程式命令

輸出格式類型

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

  • Visual

    Visual 格式類型會開啟外部的差異應用程式。 依預設會啟動 diffmerge.exe。

  • Brief

    Brief 格式會列印出進行比較的檔案是否有所差異。

  • Context

    Context 格式針對檔案中的差異提供內容行。 這個格式是根據 diff –c 輸出格式從 UNIX 所衍生。

  • RCS

    RCS 格式類似於 /format:unix,只是不會提供內容行。

    不會為檔案結尾遺失的行標記結尾提供特殊的處理。

  • SS

    SS 是 Visual SourceSafe 的預設差異輸出格式。 如需詳細資訊,請參閱 Microsoft 網站上的<Diff (檔案) (命令列)>(https://go.microsoft.com/fwlink/?LinkId=99139) (英文)。

  • SS_SideBySide

    SS_SideBySide 是 Visual SourceSafe 的預設並排輸出格式。

  • SS_Unix

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

  • Unified

    Unified 格式是從 UNIX 架構的 diff –u 輸出格式所衍生。 /format:context 會重複差異字串之間相同的內容行,/format:unified 則不會。

    Unified 格式只有在這個情況才會產生新的統一差異字串 (@@ ... @@) 行:到下一個差異字串的距離大於內容行行數時。

  • 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 seprated by commas indicate a line range.
    # signs before the character indicate line numbers in the first file
    # signs after the character indidicate 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 工作區版本之間的差異,後者是從 Team Foundation 版本控制伺服器所簽出檔案的版本。

c:\projects>tf difference 314.cs

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

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

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

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

下列範例顯示屬於 "release" 標籤的 314.cs 版本以及屬於變更集 3200 的版本之間的差異。

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

- 或 -

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

下列範例顯示名為 Nadia 的使用者擱置在 PeerCodeReview8 中的 e271.cs 版本以及該使用者用來做為變更依據的「基本擱置集版本」(Base Shelveset Version)之間的差異。 還會顯示在 Nadia 擱置時暫止於 e271.cs 的變更類型。

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

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

c:\projects> tf difference /shelveset:PeerCodeReview2

請參閱

參考

Merge 命令

Checkin 命令

Shelvesets 命令

概念

管理檔案類型

其他資源

Tf 命令列公用程式命令

比較資料夾和檔案