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
。 您可以指定 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 在未變更的文字區域之間有兩個新的行字元,而檔案 B 有一個,結果會顯示為差異。 如果這兩個檔案只有一個新行,但 檔案 A 會當做新行使用 \r\n
,而 檔案 B 會使用 \n
,此選項 /ignoreeol
會忽略為差異。
/ignorecase
不會反白顯示比較檔案之間的字母大小寫差異。
/recursive
比較目前資料夾與其所有子資料夾之間的差異。
/options
/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
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
下列範例顯示屬於標籤release
的 314.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