共用方式為


使用 Team Foundation 版本控制命令

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

您可以使用版本控制命令來執行幾乎所有可在 Visual Studio 中執行的 Team Foundation 版本控制 (TFVC) 工作。 您也可以使用版本控制命令來執行在 Visual Studio 中無法完成的數項工作。 若要從命令提示字元或腳本內執行版本控制命令,請使用 tf.exe 工具。

執行命令

若要啟動 Visual Studio 命令提示字元,請從 Windows [開始]中選取 [VS2022 開發人員命令提示字元] 或舊版捷徑。

備註

針對 Visual Studio 2019 和更新版本,tf.exe 二進位檔不再位於 Visual Studio 安裝路徑中的固定位置,例如,C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE。 如果您的腳本使用 tf.exe,請勿根據 Visual Studio 安裝路徑硬式編碼檔案的路徑。

在大部分情況下,您會在工作區中對應的目錄內容中執行版本控制命令。 例如,$/SiteApp/Main/ 會對應至 c:\\code\\SiteApp\\Main\\。 若要取得工作區中所有專案的最新版本,請使用下列命令:

c:\code\SiteApp\Main\SolutionA>tf get

設定您的開發環境及管理工作空間

您的工作區是小組程式代碼基底的本地副本。 因為它是您開發電腦上的本機副本,所以您可以在隔離的環境下開發和測試您的代碼,直到您準備好提交工作為止。 以下是一些用來管理工作區的指令:

如需詳細資訊,請參閱下列資源:

開發您的應用程式

使用下列命令,與小組在版本控制下開發您的應用程式:

如需詳細資訊,請參閱 在 Team Foundation 版本控制中開發您的應用程式

暫停您的工作

基於各種原因,有時您需要擱置一些或所有進行中的工作。 若要暫停和繼續您的工作,以及管理工作架,請使用下列命令:

欲取得更多資訊,請參閱 擱置您的工作並管理擱置集

貢獻您的作品

使用 checkin 命令,將程式碼提交到團隊的程式碼庫:

  • Checkin 命令:將檔案或資料夾的待定變更提交到伺服器。

如需詳細資訊,請參閱 將您的工作簽入團隊的代碼庫

管理檔案並解決問題

使用下列各節中的資源來管理檔案。

檢視和管理版本控制檔案和資料夾

如需詳細資訊,請參閱 使用原始檔控制總管來管理版本控制下的檔案

檢視及管理過去的版本

如需詳細資訊,請參閱 檢視和管理舊版

比較資料夾和檔案

如需詳細資訊,請參閱 檢視和管理舊版

解決檔案衝突

  • 解決命令:解決工作區和伺服器上專案之間的衝突。

如需詳細資訊,請參閱 解決Team Foundation版本控制衝突

使用版本控制系統鎖功能

如需更多資訊,請參閱 版本控制鎖定的操作

隔離風險

使用下列命令來使用分支來隔離風險:

如需詳細資訊,請參閱 使用分支來隔離 Team Foundation 版本控制中的風險。

管理版本控制

使用下列命令來管理您的版本控制系統:

如需詳細資訊,請參閱 設定簽出設定

取得版本控制命令的說明

使用下列命令來取得版本控制命令的詳細資訊:

瞭解命令語法

每個命令的語法會出現在每個參考發行項的頂端。

必要和選擇性參數

不帶括號的參數是必要的。 [方括弧] 表示不需要完成命令的選擇性自變數。 不過,即使您未指定 選項,某些選擇性自變數也有套用至命令的預設值。

排他性參數

當選項以管道分隔時(|),您可以指定其中一個選項。

逐字和可取代的參數

未以括弧括住的項目是逐字選項。 以角括弧括住的專案(<>)是自變數,您必須以實際字元取代才能執行命令。

命令快捷方式和別名

某些命令支援快捷方式。 例如,您可以使用 tf deletetf del呼叫 Delete 命令

範例

例如,請考慮 簽出命令

tf checkout [/lock:( none|checkin|checkout)] [/recursive] <item-spec> [/login: <username>, [<password>]]

此範例包含下列自變數:

  • <item-spec>:您必須將這個參數取代為 項目規格; 識別您正在檢出的項目。
  • 以下參數是選擇性的。 如果您未提供它們,則不會將其效果套用至 命令:
    • /lock:(none|checkin|checkout):如果您未指定 /lock 選項,系統預設會使用 /lock:none。 否則,您可以選擇其他鎖定選項之一。
    • /recursive:如果您想要以遞歸方式檢出資料夾中的多個專案,您必須完整地指定此選項。
    • /login:<username>, <password>:如果您想要以其他使用者身分執行命令,您必須逐字指定 [/login] 選項,並以使用者名稱取代 <username>。 如有必要,請將 <password> 取代為用戶的密碼。

指定受命令影響的專案

您可以使用專案規格和版本規格來指定哪些專案受到命令影響。

使用專案規格自變數來指定受影響的專案

您可以使用項目規格來指定受命令影響的專案。 您可以在用戶端電腦或 Azure DevOps 伺服器上指定專案。 您可以使用通配符,例如 *

用戶端項目規格自變數

用戶端項目規格自變數會指定用戶端電腦上項目的路徑,例如:

  • 例如,資料夾 c:\code\SiteApp\Main\SolutionA\
  • 例如,檔案 c:\code\SiteApp\Main\SolutionA\Project1\program.cs
  • 例如,多個檔案 c:\code\SiteApp\Main\SolutionA\*.cs
  • 通用命名慣例 (UNC) 路徑,例如 \\myshare\code\SiteApp\Main

伺服器項目規格自變數

伺服器項目規格自變數會指定 Azure DevOps 伺服器上的項目路徑,例如:

  • 例如,資料夾 $/SiteApp/Main/SolutionA
  • 例如,檔案 $/SiteApp/Main/SolutionA/Project1/program.cs
  • 例如,多個檔案 $/SiteApp/Main/SolutionA/*.cs

當您需要在不在客戶端電腦上的專案上執行命令時,通常會使用伺服器項目規格自變數。 例如,假設您正在使用開發計算機。 如果您需要取得某些位於您不工作的專案集合中的項目的修訂歷程記錄數據,您可以使用下列命令:

c:\>tf history /collection:https://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive  
/noprompt 

多個項目規格引數

針對某些命令,您可以指定多個項目規格自變數,例如:

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

這個指令會檢出 program.csprogram2.c

使用版本規格自變數來指定受影響的專案版本

您可以使用版本規格來指定受命令影響的專案版本。 若要提供版本規格,您可以:

  • 使用 /version 選項,例如,/version:C44

  • 使用分號將版本規格附加至項目規格,例如,program1.cs;C44

當您使用 History 命令Difference 命令時,您可以藉由使用tilde 分隔版本來指定版本範圍,例如:

c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2022~D4/24/2022

使用下列語法來指定版本規格:

類型 語法 說明 範例 結果
變更集 [C]<version-number> 根據變更集編號指定項目。 如果範圍中的專案未在指定的變更集中修改,系統會採用指定變更集之前所發生之專案的最新版本。 如果您只指定數位,則可以省略 C tf get readme.txt /v:C8

tf get readme.txt /v:8

tf get readme.txt;8
如果在變更集 8 中修改了 readme.txt,範例程式碼會取得該版本的檔案。 否則,它會取得版本 8 之前的最新 readme.txt 版本。
標籤 L<label> 指定套用標籤的項目。 tf get readme.txt;LJulyHotFix

tf get /version:LLastKnownGood
第一個範例會取得版本 readme.txt,該版本標記為 JulyHotFix。 第二個功能會在變更集被標記為 LastKnownGood 時,擷取工作區中所有已標記項目的版本(並刪除那些當時未加上標籤的項目)。 您可以在第二個範例中使用程式代碼作為 自動化建置程式的一部分,
日期和時間 D<yyyy-mm-ddTxx:xx>



D<mm/dd/yyyy>



任何 .NET Framework 支援的格式。



本機上支援的任何日期格式。
指定在特定日期和特定時間建立的變更集。 tf get /version:D2022-03-22

tf get /version:D2022-03-22T09:00
第一個範例會更新工作區,使其符合存在於 2022 年 3 月 22 日午夜的程式碼基底。 第二次更新工作區以便與 2022 年 3 月 22 日上午 9:00 當時的程式碼庫相匹配。 如需 .NET Framework 支援日期和時間格式的詳細資訊,請參閱 DateTime標準日期和時間格式字串
目前的工作區 W 指定工作區中的版本。 - -
指定的工作區 W<workspace-name>; <workspace-owner> 指定指定工作區中的版本。 tf get /version:WResolveRIConflicts;PatW 此範例會指定 ResolveRIConflicts 工作區中由 PatW 擁有的版本。
小提示 T 指定最新版本。 - -

使用選項來修改命令的運作方式

您可以使用一些常見的選項來修改命令的運作方式。

使用 [/noprompt] 選項來隱藏數據輸入要求,並重新導向輸出數據

使用 [/noprompt] 選項來隱藏資料輸入的要求,並將輸出數據重新導向至命令提示字元視窗。 當您需要在文稿中使用版本控制命令時,此選項很有用:

  • 命令會在使用者不介入的情況下繼續進行。
  • 數據可供腳本執行作業,例如剖析或擷取。

當您使用這個選項時,系統會:

  • 隱藏輸入的所有要求:

    • 命令提示字元視窗中不會詢問問題。 例如,當您搭配此選項使用 Undo 命令 時,系統不會提示您確認是否要復原變更。
    • 不會顯示 Windows 和對話框。 例如,您可以使用此選項搭配 Checkin 命令。 系統不會顯示 要您確認項目及相關工作項目的 對話框。 相反地,系統會在無需確認的情況下簽入項目。
  • 將輸出數據重新導向至命令提示字元。 例如,您可以使用此選項搭配 History 命令。 資料會顯示在命令提示字元視窗中,而不是 [歷程記錄] 視窗

使用 [/login] 選項來指定認證

使用 /login 選項,以指定 Azure DevOps 伺服器使用者帳戶來執行命令。 當您在另一個小組成員的計算機上工作時,此選項很有用。

例如,假設您正在小組成員的開發計算機上工作。 您可以使用 Lock 命令 來解除鎖定您稍早鎖定的檔案:

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>,<password>

如果您要避免在命令提示字元中出現密碼,您可以輸入命令而不使用密碼:

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>

輸入此命令之後,系統會提示您在遮罩輸入的對話框中輸入密碼。

使用 [/lock] 選項來套用或移除鎖定

這很重要

最佳做法是使用 /lock 選項,並視需要謹慎使用。 通知小組成員您鎖定項目的原因,以及何時計劃移除鎖定。

使用 [/lock] 選項,在您執行另一個命令時套用或移除鎖定,例如 新增編輯

/lock:(none|checkin|checkout)

/lock 命令會使用下列選項:

  • None:沒有鎖定物品。 如果鎖定已經存在,則會移除鎖定。

  • CheckinCheckout:施加鎖定。 如需詳細資訊,請參閱 瞭解鎖定類型。

備註

在少數情況下,鎖定作業可能會失敗:

  • 如果任何其他使用者已鎖定任何指定的專案,鎖定作業就會失敗。
  • 如果指定的項目已經有等待中的變更,系統就會忽略這個參數。 在此情況下,您必須使用 Lock 命令 來變更項目的鎖定。

使用選項快捷方式

您可以縮寫下列選項。

選項

選項別名

/comment

-C

/computer

-M

/delete

-D

/force

-P

/format

-F

/help

-?, -H

/lock

-K

/login

-Y

/newname

-N

/noprompt

-I

/owner

-O

/recursive

-R

/server

-S

/slotmode

-X

/template

-T

/user

-U

/version

-V

/workspace

-W

了解結束代碼

版本控制命令會傳回下列結束代碼:

結束代碼

定義

0

成功。

1

部分成功。 至少一些事情,或者可能所有事情都未能成功。

2

無法辨識的命令。

100

沒有成功。

例如,假設您執行下列命令:

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

如果您嘗試取出的其中一個檔案不存在於伺服器上,命令會傳回 1,表示部分成功。