Team Foundation バージョン管理 (TFVC) コマンドを Git ワークフローにマップする方法を理解する

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

Visual Studio 2019 | Visual Studio 2022

Git を採用する予定があり、TFVC アクションに詳しく、それらが Git にどのようにマップされるか疑問に思っていますか? どちらも強力で完成度の高いソース管理システムです。 ただし、慣れ親しんだ一般的なアクションを他方にマッピングすると、混乱を招く可能性があります。

この記事では、製品ドキュメントに詳しく記載されているため、Git コマンドの詳細については深く掘り下げませんが、一般的な作成 -> クローン -> 分岐 -> 変更 -> コミット -> プッシュ ワークフローを進めながら、適切な決定を行うのに役立つ例を紹介します。

新しいリポジトリを作成して初めから開始する

各プロジェクトでは、同じプロジェクトで TFVC と Git リポジトリをホストし、1 つの TFVC と 1 つ以上の Git リポジトリを作成できます。

Azure Repos で新しい Git リポジトリを作成する

リポジトリが作成されると、すぐに開始するための詳細な手順が表示されます。

Azure Repos で新しい Git リポジトリの作成を始める

手順ページの最後にある [Create a ReadMe file](ReadMe ファイルを作成する) をクリックして、リポジトリ コンテキストを指定し、いくつかの履歴を作成します。

Azure Repos で新しい Git リポジトリを初期化する README を作成する

ワークスペースを作成して最新情報を入手する

TFVC リポジトリに初めて接続するときは、通常、ワークスペースを作成し、最新のコードを取得します。 では、Git でどのように始めればよいのでしょうか。

TFVC のワークスペースと同様に、コンピューター上のフォルダーに対して、Git リポジトリに clone を実施します。 クローンすると、リポジトリのすべてのコンテンツと履歴がローカル コンピューターにダウンロードされます。 リポジトリを一度クローンすると、ほぼすべての操作がローカルで実行されます。 一元化されたリポジトリが完全にバックアップされたことで、オフラインで作業できます。

git clone https://dev.azure.com/demo-fabrikam/Fabrikam/_git/Mapping-TFVC-actions-to-Git

リポジトリごとに 1 回だけクローンする必要がありますが、TFVC ワークスペースと同様に、複数のクローンを作成して、進行中の作業を分離することができます。 ただし、変更を分離するのに適した方法は、一般的に分岐することです。

分岐を作成する

Git では、常にブランチ (既定では main ブランチ) で作業しています。 複数のローカル ブランチを作成することをお勧めします。 これは、数秒かかるプロセスであり、ブランチ間のシームレスなコンテキスト切り替えを可能にし、分離して作業することができます。 パスにスコープが設定されている TFVC ブランチとは異なり、Git ブランチはリポジトリ スコープが設定されています。 これらは軽量で、ローカルのみにすることも、変更を共有する準備ができたタイミングで他のユーザーと共有することもできます。

分離して作業する必要がある場合、作業を中断する必要がある場合、新機能に集中する必要がある場合、または Git pull request を実行する予定の場合は、分岐を検討してください。

TFVC ユーザーとして、数回繰り返します。

  • 分岐することをお勧めします。
  • Git 分岐は、安価で、速く強力です。
  • Git では、ローカル ブランチを使用することをお勧めします。
  • 必要に応じて、一元化されたリポジトリにローカル ブランチを発行します。
  • 変更を行う前に、必ずブランチ コンテキストを確認します。
  • users/エイリアス/ブランチ名などの一般的な規則を使用してブランチに名前を付けます (users/doris/newfeature など)

francis/demo-feature という名前のローカル トピック ブランチを作成して切り替えます。 最初に git status を実行して、開始するのに適したブランチにいることを確認することをお勧めします。

git checkout -b francis/demo-feature

Windows コマンド ラインから新しい Git ブランチを作成

ファイルを追加して変更を行う

TFVC エクスペリエンスと同様に、作業フォルダー内の新しいファイルが自動的にリポジトリに含まれることはありません。 git add コマンドを使用して新しいファイルをステージします。これは、TFVC で add Items to Folder 操作を実行するのと同じです。

git add <file>

または

git add --all

事前にベイクされたサンプルを使用すると、13 個の新しいファイルがローカル リポジトリに追加され、ステージされます。

保留中の変更を表示する

どのような変更が今、作業環境に置かれているのか疑問に思いますか? 以前と同様に、Visual Studio IDE の Git status コマンドまたは Changes ビューには、作業ツリーの変更が表示されます。

git status

Git 状態を使用してステージされている変更を表示する

変更をチェックインしてローカルでコミットする

TFVC では、保留中の変更をサーバーに送信するチェックインを使用して変更を共有します。 Git プロセスとは少し異なります。 まず、ローカル リポジトリにコミットし、コミット オブジェクト (変更セットなど) を作成し、その後プッシュしてそれらの変更をサーバーに送信します。

TFVC の Checkin Pending Changes と同様に、git commit を使用してローカル リポジトリに変更をコミットします。 主な違いは、git commit によって、リモート リポジトリではなく、ローカル リポジトリに変更がコミットされる点です。

git commit

サーバー/リモート リポジトリで変更をチェックインする

まず、ローカルの francis/demo-feature ブランチをリモート サーバーに公開する必要があります。これには、コミットされたすべての変更が含まれます。

git push --set-upstream origin francis/demo-feature

ローカルのその他の更新をリモート リポジトリと同期するには、git push を使用して変更をプッシュする必要があります。 git コマンドまたは Visual Studio IDE を使用した推奨の方法を次に示します。

  • fetch を使用して、コンテンツをダウンロードし、他のブランチから追加された変更をプレビューします。
  • pull を使用して、他のブランチからの変更をダウンロードしてマージします。
  • push を使用して、ローカルの変更を共有します。

履歴を表示する

作成したばかりのコミットを表示するには、ローカル履歴を確認します。

コンパクトな履歴の場合は、以下を使用します。

git log --oneline

詳細を表示するには、以下を使用します。

git log

Git ログを使用してブランチ履歴を確認する

上記のように、git log では作成者、メール アドレス、書き込まれた日付、コミット SHA-1 チェックサムが一覧表示されます。 TFVC ユーザーは、--stat オプションを使用して、ファイル名や変更統計などの詳細情報を含めることができます。

Azure DevOps Services Web ポータルを使用して、一元化されたリポジトリの履歴を表示することもできます。

Azure DevOps Services Web ポータルで、[CODE] > [履歴] または [CODE] > [エクスプローラー] > [履歴] を選択します

Azure Repos でのブランチ履歴の表示

この時点で、一般的な TFVC アクションに基づいて、作成 -> クローン -> 分岐 -> 変更 -> コミット -> プッシュ ワークフローが正常に完了しました。

また、pull request を発行することもでき、この時点でサーバー/リモート リポジトリで変更を発行およびステージすることができます。

その他のアクション

ブランチを切り替える

Git を使用する場合は、コンピューター上のフォルダーと保存先を別に切り替えることでブランチを変更しないでください。 コンテキストを変更するには、checkout を実行して、作業ディレクトリ全体が選択したブランチまたはコミットと一致するようにします。 速くシンプル!

コマンド ライン

git checkout <branch>

ローカル リポジトリに存在するブランチを忘れた場合は、git branch を使用して、既定のブランチと既知のブランチを一覧表示します。

作業しているブランチに注意してください。 Git で複数のブランチを操作する場合は、同じ作業ディレクトリの所定の位置にあるブランチを切り替えます。 ブランチ間の切り替えは高速な操作であるため、常に正しいブランチにいることを確認することをお勧めします。

最新バージョンの取得

更新プログラムを取得する理由はたくさんあります。 たとえば、コンテキストを別のプロジェクトに切り替える必要がある場合は、開発マシンを最新バージョンのコードベースで更新します。

コマンド ライン

git pull

または

git fetch

続けて次を入力します

git merge FETCH_HEAD

常に最新バージョンを取得し、マージの競合をローカルで解決します。

ローカルでの変更を元に戻す

ローカル リポジトリで行ったすべてのリビジョンを元に戻し、作業環境をリモート リポジトリから最新バージョンにリセットする正当な理由がある場合があります。

コマンド ライン

git reset --hard HEAD

続けて次を入力します

git pull origin

続けて次を入力します

git clean -xdf

このシナリオは、TFVC で Overwrite writable files that are not checked out オプションと Overwrite all files if the local version matches the specified version オプションを使用して Get > Latest Version を実行するのと同じです。

または、検証済みのコースのコピーを作成した後にローカル リポジトリを手動で削除してから、リポジトリをもう一度 clone することもできます。

Git ユーザーは、さらに多くのアクションとオプションを使用できます。 詳細を確認するのに参考となるサイトを次に示します。

Q&A

同期はどうですか?

"Visual Studio IDE Commit and Sync は、魔法のようにすべてを行ってくれるわけではないのか" と思うかもしれません。

[Git]>[Commit or Stash](コミットまたはスタッシュ) を選択して、[Git の変更] を開きます。 [すべてコミット] ドロップダウン メニューを選択し、[Commit All and Sync](すべてをコミットして同期) を選択します。

または、チーム エクスプローラーで [コミット] ドロップダウン メニューを選択し、[Command and Sync](コマンドと同期) を選択します。

チーム エクスプローラーでコミットし同期する

魔法には責任がつきものです。 多くのユーザーは、ローカル履歴をたびたび混乱させ、現在のコミットの上にマージ コミットを追加する可能性があるため、sync を好んでいません。 状態が悪い場合は、現在 IDE にリセット サポートがないため、コマンド ラインに戻す必要があります。

作成者: ALM の Jesse Houwing、Martin Hinshelwood、Mike Fourie、Willy Schaub | DevOps Rangers。 こちらからお問い合わせください。

(c) 2015 Microsoft Corporation. All rights reserved. このドキュメントは、"現状のまま" 提供されます。URL およびその他のインターネット Web サイトの参照を含む、このドキュメントの情報および見解は、予告なしに変更することがあります。 このドキュメントの使用上のリスクは、すべてユーザーが負うものとします。

このドキュメントは、Microsoft 製品の知的財産権に関する法的な権利をお客様に許諾するものではありません。 内部での参照を目的とする場合、このドキュメントをコピーして使用できます。