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 リポジトリを作成できます。
リポジトリが作成されると、すぐに開始するための詳細な手順が表示されます。
手順ページの最後にある [Create a ReadMe file](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
ファイルを追加して変更を行う
TFVC エクスペリエンスと同様に、作業フォルダー内の新しいファイルが自動的にリポジトリに含まれることはありません。 git add
コマンドを使用して新しいファイルをステージします。これは、TFVC で add Items to Folder
操作を実行するのと同じです。
git add <file>
または
git add --all
事前にベイクされたサンプルを使用すると、13 個の新しいファイルがローカル リポジトリに追加され、ステージされます。
保留中の変更を表示する
どのような変更が今、作業環境に置かれているのか疑問に思いますか? 以前と同様に、Visual Studio IDE の Git status
コマンドまたは Changes
ビューには、作業ツリーの変更が表示されます。
git status
変更をチェックインしてローカルでコミットする
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 log
では作成者、メール アドレス、書き込まれた日付、コミット SHA-1 チェックサムが一覧表示されます。 TFVC ユーザーは、--stat
オプションを使用して、ファイル名や変更統計などの詳細情報を含めることができます。
Azure DevOps Services Web ポータルを使用して、一元化されたリポジトリの履歴を表示することもできます。
Azure DevOps Services Web ポータルで、[CODE] > [履歴] または [CODE] > [エクスプローラー] > [履歴] を選択します
この時点で、一般的な 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 ユーザーは、さらに多くのアクションとオプションを使用できます。 詳細を確認するのに参考となるサイトを次に示します。
- ここで説明する Git コマンドについては、git ドキュメントに関するページを参照してください
- Git のように考える、困ったときのガイド。
- Git で (ほとんど) 何でも元に戻す方法、Joshua Wehner
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 製品の知的財産権に関する法的な権利をお客様に許諾するものではありません。 内部での参照を目的とする場合、このドキュメントをコピーして使用できます。