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 選項搭配使用,以指定下列一種類型的輸出格式:
這些輸出格式會在本主題的<備註>章節中說明。 |
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 diff 或 tf 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