Team Foundation バージョン管理コマンドの使用

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

Visual Studio 2019 |Visual Studio 2022

バージョン管理コマンドを使用すると、Visual Studio で実行できるほぼすべての Team Foundation バージョン管理 (TFVC) タスクを実行できます。 バージョン管理コマンドを使用して、Visual Studio では実行できないいくつかのタスクを実行することもできます。 コマンド プロンプトまたはスクリプト内でバージョン管理コマンドを実行するには、 tf.exe ツールを使用します。

コマンドを実行する

Visual Studio コマンド プロンプトを起動するには、Windows スタートから、 VS2022 以前のバージョンの開発者コマンド プロンプト のショートカットを選択します。

注

Visual Studio 2019 以降のバージョンの場合、 tf.exe バイナリは、 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDEなど、以前のリリースと同様に、Visual Studio のインストール パス内の固定された場所に存在しなくなりました。 スクリプトで tf.exeを使用する場合は、Visual Studio のインストール パスに基づいてファイルへのパスをハードコーディングしないでください。

ほとんどの場合、ワークスペースにマップされているディレクトリのコンテキストでバージョン管理コマンドを実行します。 たとえば、 $/SiteApp/Main/ は c:\\code\\SiteApp\\Main\\にマップされます。 ワークスペース内のすべての項目の最新バージョンを取得するには、次のコマンドを使用します。

c:\code\SiteApp\Main\SolutionA>tf get

開発用コンピューターを設定し、ワークスペースを管理する

ワークスペースは、チームのコードベースのローカル コピーです。 開発用コンピューター上のローカル コピーであるため、作業をチェックインする準備ができるまで、分離してコードを開発およびテストできます。 ワークスペースを管理するためのコマンドを次に示します。

詳細については、次のリソースを参照してください。

アプリを開発する

次のコマンドを使用して、チームでバージョン管理下でアプリを開発します。

詳細については、「 Team Foundation バージョン 管理でアプリを開発する」を参照してください。

作業を中断する

さまざまな理由から、進行中の作業の一部またはすべてを確保する必要がある場合があります。 作業を中断して再開し、シェルブセットを管理するには、次のコマンドを使用します。

詳細については、「 作業の中断とシェルブセットの管理」を参照してください。

作業を投稿する

checkin コマンドを使用して、チームのコード ベースにコードをチェックインします。

  • Checkin コマンド: サーバーに対するファイルまたはフォルダーに対する保留中の変更をチェックインします。

詳細については、「 チームのコードベースに作業をチェックインする」を参照してください。

ファイルの管理と問題の解決

ファイルを管理するには、次のセクションのリソースを使用します。

バージョン 管理ファイルとフォルダーの表示と管理

詳細については、「 ソース管理エクスプローラーを使用してバージョン管理下のファイルを管理する」を参照してください。

旧バージョンの表示と管理

詳細については、「 過去のバージョンの表示と管理」を参照してください。

フォルダーとファイルを比較する

詳細については、「 過去のバージョンの表示と管理」を参照してください。

ファイルの競合を解決する

  • 解決コマンド: ワークスペース内のアイテムとサーバー上のアイテム間の競合を解決します。

詳細については、「 Team Foundation バージョン管理の競合を解決する」を参照してください。

バージョン管理のロック操作

詳細については、「 バージョン 管理ロックの操作」を参照してください。

リスクを分離する

次のコマンドを使用して、ブランチを使用してリスクを分離します。

詳細については、「 ブランチを使用して Team Foundation バージョン管理のリスクを分離する」を参照してください。

バージョン管理の管理

バージョン管理システムを管理するには、次のコマンドを使用します。

詳細については、「 チェックアウト設定の構成」を参照してください。

バージョン管理コマンドに関するヘルプを表示する

バージョン管理コマンドに関する詳細情報を取得するには、次のコマンドを使用します。

コマンド構文について

各コマンドの構文は、各参照記事の先頭に表示されます。

必須および省略可能な引数

角かっこ以外の引数が必要です。 [角かっこ] は、 コマンドを完了するために必要ではない省略可能な引数を示します。 ただし、オプションの引数の中には、オプションを指定しない場合でも、コマンドに適用される既定値があります。

排他引数

オプションをパイプ (|) で区切る場合は、いずれかのオプションを指定できます。

逐語的および置換可能な引数

角かっこで囲まれていない項目は、逐語的に含めるオプションです。 山かっこ (< および >) で囲まれた項目は、コマンドを実行するために実際の文字に置き換える必要がある引数です。

コマンド ショートカットとエイリアス

一部のコマンドではショートカットがサポートされています。 たとえば、またはtf deleteを使用して tf delを呼び出すことができます。

Example

たとえば、 Checkout コマンドについて考えてみます。

tf checkout [/lock:( none|checkin|checkout)] [/recursive] <item-spec> [/login: <username>, [<password>]]

この例には、次の引数が含まれています。

  • <item-spec>: この引数は、チェックアウトする項目を識別する項目 指定 に置き換える必要があります。
  • 次の引数は省略可能です。 指定しない場合、その効果はコマンドに適用されません。
    • /lock:(none|checkin|checkout): /lock オプションを指定しない場合、システムは既定で /lock:none を使用します。 それ以外の場合は、他のロック オプションのいずれかを指定できます。
    • /recursive: フォルダー内の複数の項目を再帰的にチェックアウトする場合は、このオプションを逐語的に指定する必要があります。
    • /login:<username>, <password>: コマンドを別のユーザーとして実行する場合は、 /login オプションを逐語的に指定し、 <username> をユーザーの名前に置き換える必要があります。 必要に応じて、 <password> をユーザーのパスワードに置き換えます。

コマンドの影響を受ける項目を指定する

項目仕様とバージョン指定を使用して、コマンドの影響を受ける項目を指定できます。

項目指定引数を使用して、影響を受ける項目を指定する

項目指定を使用して、コマンドの影響を受ける項目を指定します。 項目は、クライアント コンピューターまたは Azure DevOps サーバーで指定できます。 *や ?などのワイルドカード文字を使用できます。

クライアント項目の指定引数

クライアント項目指定引数は、次のようなクライアント コンピューター上の項目へのパスを指定します。

  • フォルダー ( 例: c:\code\SiteApp\Main\SolutionA\)。
  • ファイル (例: c:\code\SiteApp\Main\SolutionA\Project1\program.cs)。
  • c:\code\SiteApp\Main\SolutionA\*.cs など、複数のファイル。
  • \\myshare\code\SiteApp\Main などの汎用名前付け規則 (UNC) パス。

サーバー項目の指定引数

サーバー項目の指定引数は、次のような Azure DevOps サーバー上の項目へのパスを指定します。

  • フォルダー ( $/SiteApp/Main/SolutionA など)。
  • ファイル ($/SiteApp/Main/SolutionA/Project1/program.cs など)。
  • $/SiteApp/Main/SolutionA/*.cs など、複数のファイル。

通常、クライアント コンピューター上にない項目に対してコマンドを実行する必要がある場合は、サーバー項目の指定引数を使用します。 たとえば、開発用マシンで作業しているとします。 作業していないプロジェクト コレクション内の一部の項目に関するリビジョン履歴データを取得する必要がある場合は、次のコマンドを使用できます。

c:\>tf history /collection:https://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive  
/noprompt 

複数の項目指定引数

一部のコマンドでは、次のような複数の項目指定引数を指定できます。

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

このコマンドは 、program.cs と program2.c をチェックアウトします。

バージョン指定引数を使用して、影響を受ける項目のバージョンを指定する

バージョン指定を使用して、コマンドの影響を受ける項目のバージョンを指定します。 バージョンの仕様を指定するには、次の手順を実行します。

  • /versionなど、/version:C44 オプションを使用します。

  • バージョン指定をセミコロンで項目指定に追加します (例: program1.cs;C44)。

History コマンドまたは Difference コマンドを使用する場合は、バージョンをチルダで区切ることで、バージョンの範囲を指定できます。次に例を示します。

c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2022~D4/24/2022

バージョン指定を指定するには、次の構文を使用します。

タイプ 構文 Description 例示 結果
[変更セット] [C]<version-number> 変更セット番号に基づいて項目を指定します。 スコープ内のアイテムが指定された変更セットで変更されなかった場合、システムは、指定された変更セットの前に発生したアイテムの最新バージョンを取得します。 数値のみを指定する場合は、 C を省略できます。 tf get readme.txt /v:C8

tf get readme.txt /v:8

tf get readme.txt;8
変更セット 8 で readme.txt が変更された場合、コード例はそのバージョンのファイルを取得します。 それ以外の場合は、バージョン 8 より前の readme.txt の最新バージョンを取得します。
ラベル L<label> ラベルを適用する項目を指定します。 tf get readme.txt;LJulyHotFix

tf get /version:LLastKnownGood
最初の例では、JulyHotFix というラベルが付いた readme.txt のバージョンを取得します。 2 つ目は、 LastKnownGood というラベルが付いた変更セットが作成されたときに存在していた、ワークスペース内のすべてのラベル付きアイテムのバージョンを取得します (ラベル付けされていない項目は削除されます)。 2 番目の例のコードは、 自動化されたビルド プロセスの一部として使用できます。
日付と時刻 D<yyyy-mm-ddTxx:xx>

又は

D<mm/dd/yyyy>

又は

.NET Framework でサポートされている任意の形式。

又は

ローカル コンピューターでサポートされている日付形式。
指定した日付に特定の時刻に作成された変更セットを指定します。 tf get /version:D2022-03-22

tf get /version:D2022-03-22T09:00
最初の例では、2022 年 3 月 22 日午前 0 時に存在していたコードベースと一致するようにワークスペースを更新します。 2 つ目は、2022 年 3 月 22 日午前 9 時に存在していたコードベースと一致するようにワークスペースを更新します。 .NET Framework でサポートされている日付と時刻の形式の詳細については、「 DateTime 」および「 標準の日時書式指定文字列」を参照してください。
現在のワークスペース W ワークスペース内のバージョンを指定します。 - -
指定されたワークスペース W<workspace-name>; <workspace-owner> 指定したワークスペース内のバージョンを指定します。 tf get /version:WResolveRIConflicts;PatW この例では、ResolveRIConflictsが所有するPatW ワークスペース内のバージョンを指定します。
ヒント T 最新バージョンを指定します。 - -

オプションを使用してコマンドの機能を変更する

いくつかの一般的なオプションを使用して、コマンドの機能を変更できます。

/noprompt オプションを使用して、データ入力要求を抑制し、出力データをリダイレクトします

/noprompt オプションを使用して、データ入力の要求を抑制し、出力データをコマンド プロンプト ウィンドウにリダイレクトします。 このオプションは、次の場所にあるスクリプトでバージョン管理コマンドを使用する必要がある場合に便利です。

  • コマンドは、ユーザーの介入なしに続行されます。
  • データは、解析やキャプチャなどの操作をスクリプトで実行するために使用できます。

このオプションを使用すると、システムは次の操作を行います。

  • 入力のすべての要求を抑制します。

    • コマンド プロンプト ウィンドウに質問はありません。 たとえば、このオプションで [元に戻す] コマンド を使用する場合、変更を元に戻すかどうかを確認するメッセージは表示されません。
    • Windows とダイアログ ボックスは表示されません。 たとえば、 Checkin コマンドでこのオプションを使用できます。 アイテムと関連する作業項目を確認するための [ チェックイン ] ダイアログ ボックスは表示されません。 代わりに、確認なしで明細がチェックインされます。
  • 出力データをコマンド プロンプトにリダイレクトします。 たとえば、[ 履歴] コマンドでこのオプションを使用できます。 データは、[履歴] ウィンドウではなくコマンド プロンプト ウィンドウに表示 されます。

/login オプションを使用して資格情報を指定する

/login オプションを使用して、コマンドを実行する Azure DevOps サーバー ユーザー アカウントを指定します。 このオプションは、別のチーム メンバーのマシンで作業する場合に便利です。

たとえば、チーム メンバーの開発マシンで作業しているとします。 Lock コマンドを使用して、前にロックしたファイルのロックを解除します。

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>,<password>

コマンド プロンプトにパスワードが表示されないようにするには、パスワードなしでコマンドを入力します。

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>

このコマンドを入力すると、入力をマスクするダイアログ ボックスにパスワードを入力するように求められます。

/lock オプションを使用してロックを適用または削除する

Important

ベスト プラクティスとして、 /lock オプションを随意で使用します。 アイテムをロックする理由とロックを解除する予定がある場合は、チームメイトに通知します。

[ /lock ] オプションを使用して、ロックを適用または削除すると同時に 、追加 や 編集などの別のコマンドを実行できます。

/lock:(none|checkin|checkout)

/lock コマンドでは、次のオプションを使用します。

  • None: アイテムにロックは設定されません。 ロックが既に設定されている場合は、削除されます。

  • Checkin または Checkout: ロックが適用されます。 詳細については、「ロックの 種類について」を参照してください。

注

場合によっては、ロック操作が失敗することがあります。

  • 他のユーザーが指定した項目のいずれかをロックした場合、ロック操作は失敗します。
  • 指定された項目に対する保留中の変更が既に存在する場合、システムはこのスイッチを無視します。 この場合は、 Lock コマンド を使用して項目のロックを変更する必要があります。

オプションのショートカットを使用する

次のオプションを省略できます。

オプション

オプションのエイリアス

/comment

-C

/computer

-M

/delete

-D

/force

-P

/format

-F

/help

-?, -H

/lock

-K

/login

-Y

/newname

-N

/noprompt

-I

/owner

-O

/recursive

-R

/server

-S

/slotmode

-X

/template

-T

/user

-U

/version

-V

/workspace

-W

終了コードについて

バージョン管理コマンドは、次の終了コードを返します。

終了コード

定義

0

成功。

1

部分的な成功。 少なくとも何か、またはおそらくすべてが成功しなかった。

2

認識できないコマンド。

100

何も成功しません。

たとえば、次のコマンドを実行するとします。

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

チェックアウトしようとしているファイルのいずれかがサーバーに存在しない場合、コマンドは部分的な成功を示す 1 を返します。