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

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

Visual Studio 2019 | Visual Studio 2022

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

コマンドを実行する

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

注意

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

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

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

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

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

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

アプリの開発

チームと共にバージョン管理対象のアプリを開発するには、次のコマンドを使用します。

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

作業を中断する

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

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

作業内容を投稿する

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

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

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

ファイルを管理し、問題を解決する

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

バージョン管理対象のファイルやフォルダーを表示および管理する

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

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

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

フォルダーおよびファイルの比較

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

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

  • Resolve コマンド: ワークスペース内とサーバー上の項目間の競合を解決します。

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

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

  • Lock コマンド: ファイルとフォルダーをロックまたはロック解除します。

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

リスクを分離する

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

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

バージョン コントロールを管理する

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

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

バージョン管理コマンドのヘルプを取得する

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

コマンド構文について理解する

各コマンドの構文は、各参照記事の上部に記載されています。

必須の引数の省略可能な引数

角かっこで囲まれていない引数は必須です。 [ブラケット] は、コマンドの実行に必須ではない省略可能な引数を示します。 ただし、省略可能な引数の中には、オプションを指定しなくても既定値がコマンドに適用されるものがあります。

排他的な引数

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

逐語的な引数と置き換え可能な引数

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

コマンドのショートカットと別名

コマンドによってはショートカットがサポートされます。 たとえば、Delete コマンドは、tf delete または tf del を指定して呼び出すことができます。

たとえば、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)。
  • 汎用名前付け規則 (UNC) パス (例: \\myshare\code\SiteApp\Main)。

サーバーの項目の指定引数

サーバーの項目の指定引数を使用して、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.csprogram2.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

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

種類 構文 説明 結果
[変更セット] [C]<version-number> 変更セット番号に基づいて項目を指定します。 指定された変更セットで範囲内の項目が変更されていない場合、指定した変更セットより前の最新バージョンの項目が取得されます。 番号だけを指定する場合は、C を省略できます。 tf get readme.txt /v:C8

tf get readme.txt /v:8

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

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

or

D<mm/dd/yyyy>

or

.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 この例では、PatW が所有する ResolveRIConflicts ワークスペース内のバージョンを指定します。
ヒント T 最新のバージョンが指定されます。 - -

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

コマンドの機能を変更できる共通オプションもあります。

/noprompt オプションを使用してデータ入力要求が表示されないようにし、出力データをリダイレクトする

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

  • コマンドがユーザーの介入なしで実行される。
  • スクリプトで解析やキャプチャなどの操作を実行するためのデータが用意されている。

このオプションを使用すると、次のようになります。

  • すべての入力要求が表示されなくなります。

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

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

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

たとえば、チーム メンバーの開発用コンピューターで作業しているとします。 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 オプションを使用してロックを適用または削除する

重要

ベスト プラクティスとして、/lock オプションは慎重に使用してください。 チームメイトに、項目をロックする理由とロックをいつ削除する予定であるかを通知します。

AddEdit など、別のコマンドの実行と同時にロックを適用または削除するには、/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 が返されます。