Rollback コマンド (Team Foundation バージョン 管理)
Azure DevOps Services の |Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
Team Foundation Version Control (TFVC) tf rollback
コマンドを使用して、1 つ以上のバージョン管理された項目に対する 1 つ以上の変更セットの影響をロールバックできます。 このコマンドは、アイテムのバージョン履歴から変更セットを削除しません。 代わりに、このコマンドは、指定した変更セットの効果を否定する保留中の変更のセットをワークスペースに作成します。
前提 条件
このコマンドを使用するには、
構文
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
オプションと共に使用して、ロールバックする変更セットを指定します。 変更セットは、次の方法で指定できます。
- 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
など) -
/toversion:D06/19/09
など、午前 0 時の日付 - 日付と時刻 (
/toversion:D06/19/09T14:32
など) - ラベル (例:
/toversion:LTestLabel
) - 現在のディレクトリにマップされているワークスペース内のバージョン
/toversion:W
- 特定のワークスペース内のバージョン (例:
/toversion:WResolveRIConflicts;AKerry
TFVC が versionspec
を解析する方法の詳細については、「Team Foundation バージョン管理コマンド使用する」を参照してください。
オプション
オプションの
説明
/changeset
このオプションを使用して、否定する 1 つ以上の特定の変更セットを指定します。
/keepmergehistory
このオプションは、ロールバックする 1 つ以上の変更セットに
/lock
関連付けられているすべての変更のロールバックが完了するまで、他のユーザーがアイテムをチェックインまたはチェックアウトできないようにするには、このオプションを指定します。 詳細については、「ロックの種類を理解する」を参照してください。
ロック オプション:
-
None
. デフォルト。 ロックは適用されません。 ロールバックするファイルがロックされている場合、このオプションはロックを解除します。 -
Checkin
. チェックインを実行してロックを解除するまで、項目をロックします。 他のユーザーは指定されたアイテムをチェックアウトできますが、ロックが解除されるまでユーザーはリビジョンをチェックインできません。 既にロックされているファイルをロックすることはできません。 -
Checkout
. ユーザーがチェックインを実行してロックを解除するまで、ロックされたアイテムをチェックインまたはチェックアウトできないようにします。
/login
このオプションの詳細については、「オプションを使用してコマンドの機能をする方法を変更する」を参照してください。
/noprompt
この操作中に表示されるダイアログ ボックスを非表示にするには、このオプションを使用します。
/recursive
操作でサブフォルダーに項目を含める場合は、このオプションを指定します。
/toversion
特定の変更セット内のファイルをその状態に戻すには、このオプションを指定します。 このオプションを使用すると、指定したバージョン以降に適用されたすべての変更セットの効果が無効になります。
/version
ロールバックするファイルとフォルダーの現在のバージョンを指定します。
備考
tf rollback
コマンドは、指定した各項目に対して指定した各変更セットの効果を否定します。 次の表に、操作が各種類の変更を否定する方法を示します。
ロールバックされた変更の種類 | ロールバック変更の種類 |
---|---|
、ブランチ |
|
の編集 |
の編集 |
エンコード を |
エンコード を |
の名前の変更/移動を |
の名前の変更/移動を |
|
削除の取り消し |
マージ の |
現在のブランチにマージされた変更を否定する変更。 |
次の一覧に、rollback
コマンドの結果の変更の例をいくつか示します。
追加 変更が発生した変更セットをロールバックします。 ロールバック操作により、ロールバック 変更が発生し、削除 変更が発生します。
編集 変更が発生した変更セット 521 をロールバックします。 ロールバック操作により、ロールバック 変更が発生し、編集 変更が発生し、変更セット 521 で 編集 変更が無効になります。
changeset 132 では、
$/BranchA/File1.txt から $/BranchB/File1.txtにマージしました。 そのマージの変更には、変更セット 92 と 104 の変更 編集 含まれています。 変更セット 162 では、変更セット 132 をロールバックすると、ロールバック 変更が発生し、変更セット 92 および 104 の 編集 変更を無効にする $/BranchB/File1.txt に 編集 変更が行われます。
終了コード
tf rollback
コマンドを実行すると、次の表の終了コードが表示されます。
終了コード | 形容 |
---|---|
0 | 操作により、すべての項目が正常にロールバックされました。 |
1 | 操作は少なくとも 1 つの項目を正常にロールバックしましたが、1 つ以上の項目をロールバックできませんでした。 |
100 | 操作で項目をロールバックできませんでした。 |
例
次の例では、その変更セットで変更されたすべての項目に対する変更セット 23 の効果を否定します。
c:\workspace> tf rollback /changeset:C23
次の例では、ファイル a.txtに対する changeset 23 の効果を否定します。
c:\workspace> tf rollback /changeset:C23 a.txt
次の例では、変更セット 23 でチェックインされたバージョンと一致するように a.txt の内容を変更します。
c:\workspace> tf rollback /toversion:C23 a.txt
次の例では、OurTeamProject の内容を、2009 年 8 月 31 日午前 0 時以前に適用された最後の変更セットと一致するように変更します。
c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/
/keepmergehistory オプションの例
ブランチまたはマージの変更を含む変更セットをロールバックする場合、通常は、同じソースと同じターゲットの間で将来のマージを行って、それらの変更を含める必要があります。 ただし、同じソースと同じターゲットの間で今後マージを行い、過去のマージ操作に含まれる変更セットを除外する場合は、/keepmergehistory
オプションを使用できます。 例えば:
2009 年 6 月 30 日に、$/BranchA/ から $/BranchB/へのすべてのアイテムの完全なマージを実行します。
c:\workspace> tf merge $/BranchA $/BranchB
このマージは、変更セット 292 の一部としてチェックインします。
7 月には、$/BranchA/Util.cs
いくつかの変更を行います。 これらの変更は、変更セット 297、301、および 305 に含まれます。 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 にも適用されるようになりました。1 週間後、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
に加えた変更を今後のマージで $/BranchB/Util.cs に再適用しない場合は、次のコマンドを入力します。 c:\workspace> tf rollback /changeset:314 /keepmergehistory
数週間後、$/BranchA/
$/BranchB/ にマージします。c:\workspace> tf merge $/BranchA $/BranchB
ロールバック時に
/keepmergehistory
オプションを省略した場合、変更セット 297、301、305 を含む、変更セット 292 以降 $/BranchA/Util.cs に適用されたすべての変更セット $/BranchB/Util.cs に、マージ 変更が適用されます。 つまり、マージによってロールバックの変更が元に戻されます。ロールバック時に
/keepmergehistory
オプションを含めた場合、マージ操作は、変更セット 292 以降、変更セット 297、301、および 305 を除く、$/BranchA/Util.cs に適用されたすべての変更セット $/BranchB/Util.cs に適用されます。 つまり、マージはロールバックの変更を元に戻しません。 したがって、BranchA のコンテンツが、BranchBのコンテンツと一致しない可能性があります。