共用方式為


復原指令 (Team Foundation 版本控制)

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

Visual Studio 2019 |Visual Studio 2022

您可以使用 Team Foundation 版本控制 (TFVC) tf rollback 命令來復原一或多個版本控制專案上一或多個變更集的效果。 此命令不會從專案的版本歷程記錄中移除變更集。 相反地,此命令會在工作區中建立一組暫止的變更,以否定您指定的變更集的影響。

先決條件

若要使用此命令,請將 讀取取出,以及 簽入 許可權設定為 [允許 ]。 如需詳細資訊,請參閱 預設 TFVC 權限

語法

tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]
tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

參數

參數

自變數

描述

<ChangesetFrom>~<ChangesetTo>

使用這個自變數搭配 /changeset 選項來指定您想要復原的變更集。 您可以透過下列方式指定變更集:

  • 單一變更集,例如 /changeset:C11
  • 變更集的範圍,例如 /changeset:C7~C20
  • 日期,例如 /changeset:D09/30/09
  • 日期範圍,例如 /changeset:D09/23/09~D10/07/09
  • 最新的變更集、/changeset:Tip/changeset:T

<ItemSpec>

使用此自變數來指定您想要復原的一或多個專案。 如果您使用 [/toversion] 選項,則必須指定此自變數。

如需 TFVC 如何剖析專案規格的詳細資訊,請參閱 使用 Team Foundation 版本控制命令

注意

您可以指定多個 itemspec 自變數。

<VersionSpec>

/version 選項和 /toversion 選項的使用者提供值。

使用這個自變數搭配 /toversion 選項,將檔案還原為特定變更集中的狀態。 您可以透過下列方式指定版本:

  • 單一變更集,例如 /toversion:C32
  • 午夜的日期,例如 /toversion:D06/19/09
  • 日期和時間,例如 /toversion:D06/19/09T14:32
  • 標籤,例如 /toversion:LTestLabel
  • 對應至目前目錄之工作區中的版本,/toversion:W
  • 特定工作區中的版本,例如 /toversion:WResolveRIConflicts;AKerry

如需 TFVC 如何剖析 versionspec的詳細資訊,請參閱 使用 Team Foundation 版本控制命令

選項

選項

描述

/changeset

使用此選項可指定您想要否定的一或多個特定變更集。

/keepmergehistory

只有在復原的一或多個變更集包含 分支合併 變更時,此選項才會生效。 如果您想要讓相同來源與相同目標之間的未來合併排除您要復原的變更,請指定此選項。

/lock

指定此選項可防止其他使用者簽入或簽出專案,直到您完成回復所有相關聯的變更為止。 如需詳細資訊,請參閱 瞭解鎖定類型。

鎖定選項:

  • None。 違約。 未套用鎖定。 如果您復原的檔案已鎖定,此選項會移除鎖定。
  • Checkin。 鎖定專案,直到您執行簽入來釋放鎖定為止。 其他使用者可以簽出指定的專案,但用戶無法在移除鎖定之前簽入修訂。 您無法鎖定已鎖定的檔案。
  • Checkout。 防止使用者簽入或簽出鎖定的專案,直到您執行簽入來移除鎖定為止。

/login

如需此選項的相關信息,請參閱 使用選項來修改命令函式的方式。

/noprompt

使用此選項可隱藏此作業期間所顯示的任何對話框。

/recursive

如果您想要讓作業在子資料夾中包含專案,請指定此選項。

/toversion

指定此選項可將檔案還原為特定變更集中的狀態。 當您使用此選項時,會否定自您指定版本以來套用的所有變更集的效果。

/version

指定您要復原之檔案和資料夾的目前版本。

言論

tf rollback 命令會否定您為每個指定之專案所指定之每個變更集的效果。 下表列出作業如何否定每種變更。

回復的變更類型 回復變更的類型
新增分支取消刪除 刪除
編輯 編輯
編碼 編碼
重新命名/移動 重新命名/移動
刪除 取消刪除
合併 變更會否定合併至最新分支的任何變更。

下列清單提供 rollback 命令所產生的一些變更範例:

  • 您會復原發生 新增 變更的變更集。 復原作業會導致 回復 變更,以及 刪除 變更。

  • 您會復原變更集 521,其中發生 編輯 變更。 回復作業會導致 回復 變更,以及 編輯 變更,而該變更會否定變更集 521 中的 編輯 變更。

  • 在變更集 132 中,您從 $/BranchA/File1.txt 合併到 $/BranchB/File1.txt。 合併中的變更包含在 編輯 變更集 92 和 104 中的變更。 在變更集 162 中,您會復原變更集 132,這會導致 回復 變更,以及 編輯 變更 $/BranchB/File1.txt,以否定變更集 92 和 104 中的 編輯 變更。

結束代碼

執行 tf rollback 命令之後,下表會出現結束代碼。

結束代碼 描述
0 作業已成功回復所有專案。
1 作業已成功回復一個專案,但無法回復一或多個專案。
100 作業無法回復任何專案。

例子

下列範例會否定變更集 23 對該變更集中變更的所有項目的影響:

c:\workspace> tf rollback /changeset:C23

下列範例會否定變更集 23 對檔案 a.txt的影響:

c:\workspace> tf rollback /changeset:C23 a.txt

下列範例會變更 a.txt 的內容,以符合簽入版本與 changeset 23:

c:\workspace> tf rollback /toversion:C23 a.txt

下列範例會變更 OurTeamProject 的內容,以符合在 2009 年 8 月 31 日午夜或午夜之前套用的最後一個變更集:

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

範例 /keepmergehistory 選項

當您復原包含分支或合併變更的變更集時,通常希望相同來源與相同目標之間的未來合併來包含這些變更。 不過,如果您想要在相同來源與相同目標之間進行未來的合併,以排除過去合併作業中包含的變更集,您可以使用 [/keepmergehistory] 選項。 例如:

  1. 在 2009 年 6 月 30 日,您可以完整合併所有專案,從 $/BranchA/ 到 $/BranchB/

    c:\workspace> tf merge $/BranchA $/BranchB
    

    您會將此合併簽入為變更集 292 的一部分。

  2. 在 7 月,您會 $/BranchA/Util.cs進行數個變更。 這些變更包含在變更集 297、301 和 305 中。

  3. 在 2009 年 8 月 1 日,您會將 $/BranchA/Util.cs 合併至 $/BranchB/Util.cs

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    您會在變更集 314 中籤入變更。 此作業的結果是,您在變更集 297、301 和 305 中所做的編輯現在也會套用 至 $/BranchA/Util.cs$/BranchB/Util.cs

  4. 一周后,您發現您在 7 月對 $/BranchA/Util.cs 所做的編輯不適合 $/BranchB/Util.cs。 您可以使用 rollback 命令來否定這些變更。 當您使用 rollback 命令來復原 合併 變更或 分支 變更時,您可以做出決定。

    • 如果您想要在 7 月對 $/BranchA/Util.cs进行 變更,以在未來合併中重新套用至 $/BranchB/Util.cs,請輸入下列命令:

      c:\workspace> tf rollback /changeset:314
      
    • 如果您想要在 7 月份對 $/BranchA/Util.cs进行 $/BranchA/Util.cs所做的变更,在未來合併中永遠不要重新套用至 $/BranchB/Util.cs,請輸入下列命令:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. 幾周后,您會將 $/BranchA/ 合併為 $/BranchB/

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • 如果您在復原時省略 選項,則 合併 變更會套用至 自變更集 292 以來套用至 $/BranchA Util.cs/Util.cs的所有变更集,包括變更集 297、301 和 305。 換句話說,合併會復原復原變更。

    • 如果您在回復時包含 [] 選項,合併作業會套用至 自變更集 292 以來套用 至 $/BranchA/Util.cs Util.cs 的所有變更集,但不包括變更集 297、301 和 305 的所有變更集。 換句話說,合併不會復原復原變更。 因此,BranchA 上的內容可能不符合 BranchB 上的內容。