Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
Visual Studio 2019 |Visual Studio 2022
Team Foundation 版本控制 (TFVC) 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
參數
參數
自變數
描述
<itemspec>
必填。 指定要比較的專案。 如果未指定任何版本或路徑,則會假設目前的工作區版本。 接受本機和 Azure DevOps 伺服器路徑。
如需 TFVC 如何剖析 itemspec 以判斷哪些專案在範圍內的詳細資訊,請參閱 使用 Team Foundation 版本控制命令。
difference 命令不支援通配符。
此參數無法與 /shelveset 選項結合。
<itemspec2>
自選。 要比較 itemspec 的專案。 如果您沒有提供第二個 itemspec,則會使用該專案的最新 Azure DevOps 伺服器版本。
<filetype>
提供 /type 選項的值。 您可以指定 binary 或 text 和代碼頁編號或代碼頁的易記名稱。
<format>
與 /format 選項搭配使用,以指定下列其中一種類型的輸出格式:
VisualBriefContextRCSSSSS_SideBySideSS_UnixUnifiedUnix
這些輸出格式會在
<versionspec>
/version 選項的使用者提供值。 如需 TFVC 如何剖析版本規格以判斷其範圍內哪些專案的詳細資訊,請參閱 使用 Team Foundation 版本控制命令。
<shelvesetowner>
依使用者名稱識別擱置集的擁有者。 如果未提供此參數的值,則會假設目前的使用者。
<shelvesetname>
指定擱置集的名稱。 只要不同的用戶擁有每個擱置集,就可以在執行 TFVC 的伺服器上建立多個具有相同名稱的擱置集。
<shelveset_itemspec>
指定要與基底擱置集版本比較的資料夾或檔案名稱。
<username>
提供值給 [/login] 選項。 您可以將使用者名稱值指定為 DOMAIN\username 或 username。
選項
選項
描述
/type
覆寫任何偵測到的編碼,並使用指定的編碼將檔案呈現至差異引擎。
/version
指定要比較的檔案或資料夾版本。 如果您未提供 versionspec,TFVC 預設會使用工作區版本。
您可以藉由將分號和版本規範附加至每個檔名結尾,而不是使用 /version 旗標來指定版本。
/format
指定 format 自變數所指定的輸出格式。
/ignorespace
不會反白顯示比較檔案之間的空格符差異。
/ignoreeol
忽略兩個檔案或檔案版本中新行字元之間的差異。
/ignoreeol 的運作方式與 ignorespace不同,它會將八個空格視為一個。 不過,如果您使用 [/ignoreeol] 選項並 [檔案 A] 在未變更的文字區域之間有兩個新的行字元,而 File B 有一個,結果會顯示為差異。 如果這兩個檔案只有一個新行,但 檔案 A 使用 \r\n 做為新行,而 檔案 B 使用 \n,則 /ignoreeol 選項會忽略該選項作為差異。
/ignorecase
不會反白顯示比較檔案之間的字母大小寫差異。
/recursive
比較目前資料夾與其所有子資料夾之間的差異。
/options
指定要由 difference叫用之工具的選項字串。 如需詳細資訊,請參閱 將檔案類型與差異工具產生關聯,將檔案類型與合併工具產生關聯。
/shelveset
指定要與擱置集所依據的 Azure DevOps 伺服器版本進行比較的擱置集。
此選項無法與 itemspec 自變數結合。 若要比較個別的擱置集專案,您可以提供 shelveset_itemspec。
/noprompt
隱藏此作業完成期間所顯示的任何對話框。
/configure
從 Visual Studio 使用者介面叫用 [設定使用者工具] 對話框
/login
指定要使用 TFVC 驗證使用者的使用者名稱和密碼。
言論
注意
您可以在命令列輸入 tf diff 或 tf 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格式提供檔案差異的內容行。 此格式衍生自 UNIX 型diff -c輸出格式。RCS格式與/format:unix類似,但未提供內容行。 未提供檔案結尾遺漏行標記結尾的特殊手法。SS是 Visual SourceSafe 的預設差異輸出格式。 如需詳細資訊,請參閱 Diff (命令行)。SS_SideBySide是 Visual SourceSafe 的預設並存輸出格式。SS_Unix與/format:unix輸出格式類似,但/format:ss_unix包含內容行和/format:unix則不會。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 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
下列範例顯示屬於標籤 之 release 版本與屬於changeset3200的版本之間的差異。
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