Team Foundation 版本控制命令參考

您可以使用版本控制命令,進行幾乎所有可在 Visual Studio 中執行的工作,以及一些在 Visual Studio 無法完成的工作。 您可以使用 tf.exe 工具,從命令提示字元或在指令碼內執行版本控制命令。

您想要怎麼做?

  • 執行命令

    • 設定開發電腦

    • 開發應用程式

    • 暫停工作

    • 參與工作

    • 管理檔案並解決問題

    • 隔離風險

  • 了解命令語法

  • 指定受命令影響的項目

    • 使用 itemspec 引數指定受影響的項目

    • 使用 versionspec 引數指定受影響的項目版本

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

    • 使用 /noprompt 選項隱藏資料輸入要求,並將輸出資料重新導向至命令提示字元視窗

    • 使用 /login 選項指定執行命令時的認證

    • 使用 /lock 選項套用或移除鎖定

    • 使用選項捷徑

  • 了解結束代碼

執行命令

若要啟動 Visual Studio 命令提示字元,請從 Windows 的 [開始],依序選擇 [Microsoft Visual Studio 2012] 及 [Visual Studio 工具],然後選擇其中一個 [命令提示字元] 捷徑。

在大多數情況下,您會在工作區對應的目錄內容中執行版本控制命令。 例如,$/SiteApp/Main/ 對應至 c:\code\SiteApp\Main\。 取得工作區中所有項目的最新版本:

c:\code\SiteApp\Main\SolutionA>tf get
注意事項注意事項

我們目前不會重新發行部分主題。不過,您可以閱讀這些主題的 Visual Studio 2010 版本。

設定開發電腦並管理工作區

您的工作區是小組程式碼基底的本機複本。 由於這是開發電腦上的本機複本,您可以獨立開發和測試程式碼,直到您準備好簽入您的工作為止。 以下是一些用來管理工作區的命令:

另請參閱:在開發電腦上設定 Team Foundation 版本控制建立和使用工作區

開發應用程式

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

另請參閱:在 Team Foundation 版本控制中開發應用程式

暫停工作

基於各種理由,有時候您會需要暫停部分或所有正在進行的工作。 若要暫止和繼續工作,以及管理擱置集,請使用下列命令:

請參閱:暫停工作和管理擱置集

參與工作

以下說明如何將您的程式碼簽入小組的程式碼基底:

  • Checkin 命令
    將檔案或資料夾的暫止變更簽入伺服器。

另請參閱:將工作成果簽入小組的程式碼庫

管理檔案並解決問題

隔離風險

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

請參閱:在 Team Foundation 版本控制中使用分支隔離風險

管理版本控制

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

另請參閱:管理 Team Foundation 版本控制 (Visual Studio 2010)。

取得版本控制命令的說明

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

了解命令語法

每個命令的語法會出現在每個參考主題的上方。

必要和選擇性引數

需要不加括號的引數。 [Brackets] 表示完成命令不需要的選擇性引數。 不過,某些選擇性引數具有預設值,即使您未指定選項,也會套用至命令。

專有引數

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

逐字和可取代的引數

粗體項目是您逐字包含的選項。 斜體項目是您必須使用實際字元取代以便執行命令的引數。

命令捷徑和別名

一些命令支援捷徑。 例如,您可以使用 tf deletetf del 呼叫 Delete 命令

範例

例如,Checkout 命令

tf checkout [/lock:( none|checkin|checkout)] [/recursive] itemspec [/login: username,[ password]]

以下檢閱此範例中的引數:

  • itemspec:您必須使用指定簽出項目的項目規格來取代此引數。

  • /lock:(none|checkin|checkout):您不需要指定 /lock 選項。 如果未指定此選項,系統預設會指定 /lock:none。 或者,您可以指定其中一個鎖定選項。

  • 下列引數為選擇性,如果未提供,則不會將其效果套用至命令:

    • /recursive:如果您想以遞迴方式簽出資料夾中的多個項目,您必須逐字指定此選項。

    • /login:username,password:如果您想以其他使用者身分執行命令,您必須逐字指定 /login 選項、以使用者名稱取代 username,並在必要時提供密碼。

指定受命令影響的項目

您可以使用 itemspec 和 versionspec 指定受命令影響的項目。

使用 itemspec 引數指定受影響的項目

您可以使用 itemspec (項目規格) 指定受命令影響的項目。 您可以在用戶端電腦或 Team Foundation Server 上指定項目。 您可以使用萬用字元,例如 *?

用戶端 itemspec 引數

用戶端 itemspec 引數指定項目在用戶端電腦上的路徑,可以是資料夾 (例如 c:\code\SiteApp\Main\SolutionA\)、檔案 (例如 c:\code\SiteApp\Main\SolutionA\Project1\program.cs) 或多個檔案 (例如 c:\code\SiteApp\Main\SolutionA\*.cs)。 您也可以指定 UNC 路徑,例如 \\myshare\code\SiteApp\Main

伺服器 itemspec 引數

伺服器 itemspec 引數指定項目在 Team Foundation Server 上的路徑,可以是資料夾 (例如 $/SiteApp/Main/SolutionA)、檔案 (例如 $/SiteApp/Main/SolutionA/Project1/program.cs) 或多個檔案 (例如 $/SiteApp/Main/SolutionA/*.cs)。

當您需要對項目 (而不是用戶端電腦) 執行命令時,您通常會使用伺服器 itemspec 引數。 例如,您想要在開發電腦上工作,並需要取得未參與之 Team 專案集合中某些項目的一些修訂記錄資料:

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

多個 itemspec 引數

您可以為某些命令指定多個 itemspec 引數。 例如:

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

簽出 program.cs 和 program2.c。

使用 versionspec 引數指定受影響的項目版本

您可以使用 versionspec (版本規格) 指定受命令影響的項目版本。 若要提供 versionspec,您可以:

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

  • 將 versionspec 附加至 itemspec,並以分號分隔。 例如:program1.cs;C44

當您使用 History 命令Difference Command時,您可以利用波狀符號 (~) 分隔版本,即可指定版本範圍。 例如:

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

使用下列語法指定 versionspec。

類型

語法

描述

變更集

[C]n

依據變更集編號指定項目。 如果範圍內的某個項目在指定的變更集中未修改,系統會使用指定變更集之前出現的最新版項目。

提示

如果只指定一個編號,則可以省略 C。

範例

c:\code\SiteApp\Main>tf get readme.txt /v:C8

-或-

c:\code\SiteApp\Main>tf get readme.txt /v:8

-或-

c:\code\SiteApp\Main>tf get readme.txt;8

如果在變更集 8 中修改了 readme.txt,請取得該版檔案。 否則,請取得第 8 版之前的最新版 readme.txt。

標籤

Llabel

指定套用 label 的項目。

範例

c:\code\SiteApp\Main>tf get readme.txt;LJulyHotFix

取得標記為 JulyHotFix 的 readme.txt 版本。

c:\code\SiteApp\Main>tf get /version:LLastKnownGood

擷取工作區中已標記之所有項目的版本 (並刪除未標記的項目),在建立標記為 LastKnownGood 的變更集時,這些項目可能存在於自動化建置流程的過程中。

日期和時間

Dyyyy-mm-ddTxx:xx

-或-

Dmm/dd/yyyy

-或-

支援 .NET Framework 的所有格式。

-或-

本機電腦上支援的所有日期格式。

指定在指定日期和時間建立的變更集。

範例

c:\code\SiteApp\Main>tf get /version:D2004-03-22

更新工作區以符合 2004 年 3 月 22 日 00:00 (午夜) 存在的程式碼基底。

c:\code\SiteApp\Main>tf get /version:D2004-03-22T09:00

更新工作區以符合 2004 年 3 月 22 日 09:00 (上午 9 點) 存在的程式碼基底。

如需支援 .NET Framework 之日期和時間格式的詳細資訊,請參閱 DateTime標準日期和時間格式字串

工作區 (目前)

W

指定您的工作區中的版本。

工作區 (指定)

Wworkspacename; workspaceowner

指定指定的工作區中的版本。

例如:WResolveRIConflicts;PeterW

提示

T

指定最新版本。

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

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

使用 /noprompt 選項隱藏資料輸入要求,並將輸出資料重新導向至命令提示字元視窗

使用 /noprompt 選項隱藏資料輸入要求,並將輸出資料重新導向至命令提示字元視窗。 當您需要在指令碼中使用版本控制命令時,此選項會很實用,因為命令會繼續進行,而不需要使用者介入,且系統會提供資料給指令碼以便執行剖析或擷取等作業。

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

  • 隱藏所有輸入要求:

    • 不會在命令提示字元視窗中詢問問題。 例如,當您搭配此選項使用 Undo 命令時,系統不會提示您確認是否要繼續復原變更。

    • 不會顯示視窗和對話方塊。 例如,您可以搭配 Checkin 命令 使用此選項。 系統不會顯示 [簽入] 對話方塊要求您確認選項 (您要簽入的項目或要建立關聯的工作項目),而會繼續簽入而不需要確認。

  • 將輸出資料重新導向至命令提示字元。 例如,您可以搭配 History 命令 使用此選項。 命令提示字元視窗 (而不是 [記錄] 視窗) 中會顯示資料。

使用 /login 選項指定執行命令時的認證

使用 /login 選項指定要執行命令的 Team Foundation Server 使用者帳戶。 當您在其他小組成員的電腦上工作時,此選項會很實用。

例如,Julia 在 Peter 的開發電腦上與他共同作業。 她使用 Lock 命令解除鎖定先前鎖定的檔案:

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:JuliaI,JuliaPassword

如果她想避免命令提示字元出現她的密碼,她可以不使用密碼直接輸入命令:

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

輸入此命令之後,系統會接著提示她在遮罩輸入的對話方塊中輸入密碼。

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

重要

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

在您執行 AddEdit 等其他命令時,使用 /lock 選項套用或移除鎖定。

/lock:(none|checkin|checkout)
  • None:項目未鎖定。 如果已鎖定,則會移除鎖定。

  • CheckinCheckout:套用鎖定。 請參閱 認識鎖定類型

注意事項注意事項

在一些情況下,鎖定作業會失敗:

  • 如果有任何其他使用者已鎖定任何指定的項目,鎖定作業就會失敗。

  • 如果項目已有暫止的變更,系統會忽略此參數。在此情況下,您必須使用 Lock Command 變更項目的鎖定。

使用選項捷徑

您可以使用下列選項的縮寫格式。

選項

選項別名

/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 以表示部分成功。