Rollback 命令 (Team Foundation 版本控制)

您可以使用此命令將一或多個變更集的效果復原到一或多個版本控制的項目。 這個命令不會從項目的版本歷程記錄移除變更集。 這個命令會在您的工作區中建立一組暫止的變更,進而取消您所指定變更集的效果。

必要的使用權限

若要使用這個命令,您必須將 [讀取]、[簽出] 和 [簽入] 權限設定為 [允許]。 如需詳細資訊,請參閱Team Foundation Server 使用權限

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 選項,就必須指定這個引數。

如需 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

如需 Team Foundation 剖析版本規格的詳細資訊,請參閱 命令列語法 (版本控制)

選項

描述

/changeset

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

/keepmergehistory

只有當您要復原的一或多個變更集包括 branchmerge 變更時,這個選項才有效果。 指定這個選項,如果您要相同來源與相同目標之間的未來合併排除您在復原的變更。

如需詳細資訊,請參閱範例:/keepmergehistory 選項。

/lock

指定這個選項以防止其他使用者簽入或簽出項目,直到您完成復原所有相關聯的變更為止。 如需詳細資訊,請參閱認識鎖定類型

鎖定選項

  • None

    預設值。 沒有套用任何鎖定。 如果您正在復原的檔案已被鎖定,這個選項便會移除該鎖定。

  • Checkin

    鎖定項目,直到您執行簽入以釋放鎖定。 其他使用者可以簽出指定的項目,但直到移除鎖定才能簽出修訂。 您不能鎖定已鎖定的檔案。

  • Checkout

    防止使用者簽入或簽出鎖定的項目,直到您執行簽入以移除鎖定為止。

/login

如需此選項的詳細資訊,請參閱 命令列選項

/noprompt

隱藏在進行此作業期間會出現的任何對話方塊。

/recursive

如果您想要作業包含子資料夾中的項目,請指定這個選項。

/toversion

指定這個選項可將檔案在特定的變更集中恢復狀態。 當您使用這個選項時,會否定自您指定版本以來所套用的所有變更集。

/version

指定您想要回復之資料夾與檔案的目前版本。

備註

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

如果您回復這個變更…

...發生復原變更,並進行了下列其他變更

addbranchundelete

delete

edit

edit

encoding

encoding

rename/move

rename/move

delete

undelete

merge

會取消任何變更的變更,都會已經合併至目前分支。

下列清單提供復原命令所產生的變更範例:

  • 如果您在復原其中發生 add 變更的變更集,復原作業就會造成 rollback 變更和 delete 變更。

  • 如果您在復原其中發生 edit 變更的變更集 521,復原作業就會造成 rollback 變更和 edit 變更,因而取消變更集 521 所包含的 edit 變更。

  • 在變更集 132 中,您會從 $/BranchA/File1.txt 合併到 $ / BranchB/File1.txt。 包含在該合併中的變更也包括變更集 92 和 104 中的 edit 變更。 在變更集 162 中,您復原變更集 132,造成 rollback 變更,以及 $/BranchB/File1.txt 的 edit 變更,進而取消在變更集 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 的內容,以符合以變更集 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. 在七月,您對 $ / 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. 一週過後,您發現在七月對 $/BranchA/Util.cs 所做的編輯不適用於 $/BranchB/Util.cs。 您可以使用復原命令否定這些變更。 當您使用復原命令來復原 merge 變更或 branch 變更時,必須進行決策。

    • 如果您想讓在七月對 $/BranchA/Util.cs 進行的變更,在未來的合併中重新套用至 $/BranchB/Util.cs,您應該輸入下列命令:

      c:\workspace> tf rollback /changeset:314
      
    • 如果您想讓在七月對 $/BranchA/Util.cs 進行的變更,在未來的合併中重新套用至 $/BranchB/Util.cs,您應該輸入下列命令:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. 幾週過後,您再將 $/BranchA/ 合併到 $/BranchB/:

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • 如果您省略 /keepmergehistory 選項, merge 變更就會套用至 $/BranchB/Util.cs,從變更集 292 以來套用至 $/BranchA/Util.cs 的所有變更集,包括變更集 297、301、305。 換句話說,未來的合併不會取消 rollback變更。

    • 如果您包括 /keepmergehistory 選項,合併作業就會套用至 $/BranchB/Util.cs,從變更集 292 以來套用至 $/BranchA/Util.cs 的所有變更集,變更集 297、301 和 305 除外。 換句話說,未來的合併不會取消復原變更。 因此,BranchA 上的內容可能不會符合 BranchB 上的內容。

請參閱

參考

Merge 命令

概念

只能從命令列執行的作業 (Team Foundation 版本控制)

其他資源

Tf 命令列公用程式命令