Difference 命令
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
Team Foundation 版本控制 (TFVC) difference
命令會比較兩個檔案、兩個資料夾中的檔案,或擱置集和本機或伺服器檔案之間的差異。
先決條件
若要使用 difference
命令,請將所有指定項目設為 Allow的 Read 許可權。 如需詳細資訊,請參閱 預設 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
選項搭配使用,以指定下列其中一種類型的輸出格式:
Visual
Brief
Context
RCS
SS
SS_SideBySide
SS_Unix
Unified
Unix
這些輸出格式會在
<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 所依據的版本進行比較。如果您在
itemspec
中包含versionspec
,例如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
之 314.cs 版本與屬於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