Rollback コマンド (Team Foundation バージョン管理)

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

Visual Studio 2019 | Visual Studio 2022

Team Foundation バージョン管理 (TFVC) の tf rollback コマンドを使用して、1 つ以上のバージョン管理された項目に対する 1 つ以上の変更セットの効果をロールバックできます。 このコマンドでは、項目のバージョン履歴から変更セットが削除されません。 代わりに、このコマンドでは、指定した変更セットの効果を無効にする一連の保留中の変更がワークスペースに作成されます。

前提条件

このコマンドを使用するには、読み取りチェックアウトチェックインのアクセス許可が許可に設定されている必要があります。 詳細については、「既定の 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]]

パラメーター

引数

Argument

説明

<ChangesetFrom>~<ChangesetTo>

この引数を /changeset オプションと共に使用して、ロールバックする変更セットを指定します。 変更セットは、次の方法で指定できます。

  • 1 つの変更セット (例: /changeset:C11)
  • 一連の変更セット (例: /changeset:C7~C20)
  • 日付 (例: /changeset:D09/30/09)
  • 日付の範囲 (例: /changeset:D09/23/09~D10/07/09)
  • 最新の変更セット、/changeset:Tip または /changeset:T

<ItemSpec>

ロールバックする 1 つ以上の項目を指定するには、この引数を使用します。 /toversion オプションを使用する場合は、この引数を指定する必要があります。

TFVC が項目指定を解析する方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。

注意

複数の itemspec 引数を指定できます。

<VersionSpec>

/version オプションと /toversion オプションの両方に対してユーザーが指定した値。

特定の変更セット内の状態にファイルを戻すには、/toversion オプションと共にこの引数を使用します。 このバージョンは、次の方法で指定できます。

  • 1 つの変更セット (例: /toversion:C32)
  • 午前 0 時の日付 (例: /toversion:D06/19/09)
  • 日付と時刻 (例: /toversion:D06/19/09T14:32)
  • ラベル (例: /toversion:LTestLabel)
  • 現在のディレクトリにマップされているワークスペース内のバージョン。 /toversion:W
  • 特定のワークスペース内のバージョン (例: /toversion:WResolveRIConflicts;AKerry)

TFVC が versionspec を解析する方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。

Options

オプション

説明

/changeset

このオプションを使用して、無効にする 1 つ以上の特定の変更セットを指定します。

/keepmergehistory

このオプションは、ロールバックする 1 つ以上の変更セットに branch または merge の変更が含まれている場合にのみ有効です。 ロールバックする変更を除外するために、同じソースと同じターゲットの間で今後のマージを行う必要がある場合は、このオプションを指定します。

/lock

関連付けられているすべての変更のロールバックが完了するまで、他のユーザーが項目をチェックインまたはチェックアウトできないようにするには、このオプションを指定します。 詳細については、「ロックの種類について」を参照してください。

ロック オプション:

  • None. 既定値。 ロックは適用されません。 ロールバックするファイルがロックされている場合、このオプションはロックを解除します。
  • Checkin. チェックインを実行してロックを解除するまで、項目をロックします。 他のユーザーは指定した項目をチェックアウトできますが、ロックが解除されるまで、ユーザーはリビジョンをチェックインできません。 既にロックされているファイルをロックすることはできません。
  • Checkout. チェックインを実行してロックを解除するまで、ロックされた項目をユーザーがチェックインまたはチェックアウトできないようにします。

/login

このオプションの詳細については、「オプションを使用してコマンドの機能を変更する」を参照してください。

/noprompt

このオプションを使用すると、この操作中に表示されるダイアログ ボックスが非表示になります。

/recursive

操作でサブフォルダー内の項目を含める場合は、このオプションを指定します。

/toversion

特定の変更セット内の状態にファイルを戻すには、このオプションを指定します。 このオプションを使用すると、指定したバージョン以降に適用されたすべての変更セットの効果が無効になります。

/version

ロールバックするファイルとフォルダーの現在のバージョンを指定します。

解説

tf rollback コマンドでは、指定した各項目に対して指定した各変更セットの効果を無効にします。 次の表に、各種類の変更を無効にする操作の一覧を示します。

ロールバックされた変更の種類 ロールバック変更の種類
addbranch、または undelete delete
edit edit
encoding encoding
rename/move rename/move
delete undelete
merge 現在のブランチにマージされた変更を無効にする変更。

次のリストでは、rollback コマンドの結果による変更のいくつかの例を示します。

  • add 変更が発生した変更セットをロールバックします。 ロールバック操作により rollback 変更と delete 変更が発生します。

  • edit 変更が発生した変更セット 521 をロールバックします。 ロールバック操作により、変更セット 521 の edit 変更を無効にする rollback 変更と edit 変更が発生します。

  • 変更セット 132 では、$/BranchA/File1.txt から $/BranchB/File1.txt にマージしました。 そのマージの変更には、変更セット 92 と 104 の edit 変更が含まれていました。 変更セット 162 では、変更セット 132 をロールバックします。その結果、変更セット 92 と 104 の edit 変更を無効にする $/BranchB/File1.txt への rollback 変更と edit 変更が発生します。

終了コード

tf rollback コマンドを実行すると、次の表の終了コードが表示されます。

終了コード 説明
0 操作によって、すべての項目が正常にロールバックされました。
1 操作では少なくとも 1 つの項目が正常にロールバックされましたが、1 つ以上の項目をロールバックできませんでした。
100 操作で項目をロールバックできませんでした。

次の例では、変更セット 23 で変更されたすべての項目に対してその変更セットの効果を無効にします。

c:\workspace> tf rollback /changeset:C23

次の例では a.txt ファイルに対する変更セット 23 の効果を無効にします。

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

次の例では、変更セット 23 でチェックインされたバージョンと一致するように、a.txt の内容を変更します。

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

次の例では、2009 年 8 月 31 日午前 0 時以前に適用された最後の変更セットと一致するように OurTeamProject の内容を変更します。

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

/keepmergehistory オプションの例

branch または merge の変更を含む変更セットをロールバックする場合、それらの変更を含めるために、通常は同じソースと同じターゲットの間で今後のマージを行う必要があります。 ただし、同じソースと同じターゲットの間で今後のマージを行い、過去のマージ操作に含まれる変更セットを除外する場合は、/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. 1 週間後、7 月に $/BranchA/Util.cs に対して行った編集が $/BranchB/Util.cs に対しては適切でなかったことに気づきました。 rollback コマンドを使用して、これらの変更を無効にすることができます。 rollback コマンドを使用して merge 変更または branch 変更をロールバックする場合、決定すべきことがあります。

    • 7 月に $/BranchA/Util.cs に加えた変更を、今後のマージで $/BranchB/Util.cs に再適用する場合は、次のコマンドを入力します。

      c:\workspace> tf rollback /changeset:314
      
    • 7 月に $/BranchA/Util.cs に加えた変更を、今後のマージで $/BranchB/Util.cs に再適用しない場合は、次のコマンドを入力します。

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. 数週間後、$/BranchA/$/BranchB/. にマージします。

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • ロールバック時に /keepmergehistory オプションを省略した場合、merge 変更では、変更セット 292 以降に $/BranchA/Util.cs に適用された、変更セット 297、301、および 305 を含むすべての変更セットが $/BranchB/Util.cs に適用されます。 言い換えると、マージによってロールバックの変更が元に戻されます。

    • ロールバック時に /keepmergehistory オプションを含めた場合、merge 操作では、変更セット 292 以降に $/BranchA/Util.cs に適用された、変更セット 297、301、および 305 を除く、すべての変更セットが $/BranchB/Util.cs に適用されます。 言い換えると、マージによってロールバックの変更が元に戻されません。 そのため、 BranchA の内容が BranchB の内容と一致しないことがあります。