Rollback コマンド (Team Foundation バージョン管理)
このコマンドを使用すると、1 つまたは複数のバージョン管理項目に対する 1 つまたは複数の変更セットの影響をロールバックできます。 このコマンドにより、項目のバージョン履歴の変更セットは削除されません。 代わりに、ワークスペースに、指定した変更セットの影響を無効にする保留中の変更のセットを作成します。
必要なアクセス許可
このコマンドを使用するには、[読み取り]、[チェックアウト]、および [チェックイン] のアクセス許可が [許可] に設定されている必要があります。 詳細については、「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 オプションを使用して、ロール バックする変更セットを指定します。 変更セットは、次のいずれかの方法で指定できます。
|
ItemSpec |
この引数を使用して、ロール バックする 1 つまたは複数の項目を指定します。 /toversion オプションを使用する場合は、この引数を指定する必要があります。 Team Foundation が項目の指定を解析する方法の詳細については、「コマンド ライン構文 (バージョン管理)」を参照してください。
メモ
複数の Itemspec 引数を指定できます。
|
VersionSpec |
/version オプションと /toversion オプションの両方にユーザーが指定した値。 この引数と /toversion オプションを使用して、特定の変更セットの状態にファイルを戻します。 バージョンは、次のいずれかの方法で指定できます。
Team Foundation がバージョン指定を解析する方法の詳細については、「コマンド ライン構文 (バージョン管理)」を参照してください。 |
オプション |
説明 |
---|---|
/changeset |
このオプションを使用して、無効にする 1 つまたは複数の特定の変更セットを指定します。 |
/keepmergehistory |
このオプションは、ロール バックする変更セットの中に branch の変更または merge の変更が含まれている場合のみ、有効です。 同じソースと同じターゲット間で将来マージを行うときに、ロール バック対象の変更を除外する場合は、このオプションを指定します。 詳細については、「例: /keepmergehistory オプション」を参照してください。 |
/lock |
すべての関連する変更のロール バックを完了するまで、他のユーザーが項目をチェックインまたはチェックアウトできないようにするには、このオプションを指定します。 詳細については、「ロックの種類について」を参照してください。 ロック オプション
|
/login |
このオプションの詳細については、「コマンド ライン オプション」を参照してください。 |
/noprompt |
この操作中のダイアログ ボックスの表示を抑制します。 |
/recursive |
サブフォルダー内の項目も操作対象にする場合は、このオプションを指定します。 |
/toversion |
特定の変更セットの状態にファイルを戻すには、このオプションを指定します。 このオプションを使用すると、指定したバージョン以降に適用されているすべての変更セットの影響が無効になります。 |
/version |
ロールバックするファイルとフォルダーの現在のバージョンを指定します。 |
解説
tf rollback コマンドは、指定した各項目に対して指定された各変更セットの影響を無効にします。 各種の変更がどのようにして無効にされるかを次の表に示します。
ロール バックする変更 |
ロールバックによる変更、およびさらに追加で実行される変更 |
---|---|
add、branch、または undelete |
delete |
edit |
edit |
encoding |
encoding |
rename/move |
rename/move |
delete |
undelete |
merge |
現在の分岐にマージされる変更をすべて無効にする変更 |
rollback コマンドの結果として実行される変更の例を次に示します。
add の変更が適用されている変更セットをロールバックする場合、ロールバック操作により rollback の変更と delete の変更が適用されます。
edit の変更が適用されている変更セット 521 をロールバックする場合、ロールバック操作により rollback の変更と、変更セット 521 の edit の変更に含まれている変更を無効にする edit の変更が適用されます。
変更セット 132 により、$/BranchA/File1.txt を $/BranchB/File1.txt にマージしました。 そのマージに含まれる変更には、変更セットの 92 と 104 の edit の変更も含まれていました。 変更セット 162 で変更セット 132 をロール バックすると、rollback の変更が適用されるほか、変更セットの 92 および 104 の edit の変更を無効にする edit 変更が $/BranchB/File1.txt に適用されます。
終了コード
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 オプションを使用できます。
たとえば、次のような状況でこのコマンドを使用できます。
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 の一部としてチェックインします。 この操作の結果、$/BranchA/Util.cs に対する変更セット 297、301、および 305 により適用した edit が $/BranchB/Util.cs に適用されました。
1 週間後、7 月に行った $/BranchA/Util.cs に対する edit が $/BranchB/Util.cs には不適切であることがわかりました。 そこで、rollback コマンドを使用して、これらの変更を無効にできます。 rollback コマンドを使用して merge の変更と branch の変更をロール バックする場合は、決定しなければならないことがあります。
$/BranchA/Util.cs に対して 7 月に行った変更を、将来のマージで $/BranchB/Util.cs に再び適用する場合は、次のコマンドを入力します。
c:\workspace> tf rollback /changeset:314
$/BranchA/Util.cs に対して 7 月に行った変更を、将来のマージで $/BranchB/Util.cs に再び適用しない場合は、次のコマンドを入力します。
c:\workspace> tf rollback /changeset:314 /keepmergehistory
数週間後、$/BranchA/ を $/BranchB/ にマージすることになりました。
c:\workspace> tf merge $/BranchA $/BranchB
/keepmergehistory オプションを指定しなかった場合は、この merge の変更により、変更セット 297、301、305 も含め、変更セット 292 以降に $/BranchA/Util.cs に適用されたすべての変更セットが、$/BranchB/Util.cs に適用されます。 つまり、将来のマージによって rollback の変更が元に戻されます。
/keepmergehistory オプションを指定した場合は、この merge 操作により、変更セット 297、301、305 を除き、変更セット 292 以降に $/BranchA/Util.cs に適用されたすべての変更セットが、$/BranchB/Util.cs に適用されます。 つまり、将来のマージによって rollback の変更は元に戻されません。 したがって、BranchA の内容は、BranchB の内容と一致しない可能性があります。
参照
参照
概念
コマンド ラインからのみ実行できる操作 (Team Foundation バージョン管理)