ファイルのコミットと履歴の表示

完了

これで Git リポジトリを初期化したので、ファイルの追加を開始する準備ができました。 このユニットでは、リポジトリ内のファイルへの変更を追跡するように Git に指示する方法を説明します。

注意

このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。

リポジトリのフォルダー構造

Git のようなバージョン コントロール システムを使用する場合は、ファイルの保存方法を計画することが重要です。 明確なフォルダー構造を使用することが推奨されます。

アプリケーションまたは別のソリューションをデプロイするために Bicep コードを作成する場合は、アプリケーション コードやその他のファイルと同じリポジトリに Bicep ファイルを保存することも推奨されます。 そうすると、誰かが Bicep とアプリケーション コードの両方を変更する新しい機能を追加する必要があるたびに、まとめて追跡されます。

また、フォルダー構造を計画することで、パイプラインからソリューションを簡単にデプロイできるようにもなります。 将来のモジュールのパイプラインについて説明します。

チームによって、リポジトリのフォルダーとファイルの設定方法の規則は異なります。 チームで作業していない場合でも、従うべき規則を決定することが推奨されます。 ファイルとフォルダーの構造が明瞭であれば、将来、そのコードで作業する人が助かります。

チームにまだ選択されたものがない場合は、それを行う方法についての提案を次に示します。

  • リポジトリのルートに、README.md ファイルを作成します。 このテキスト ファイルは Markdown で記述されていますが、リポジトリのコンテンツの説明と指示があるため、そのリポジトリで作業するチーム メンバーにとって便利です。
  • リポジトリのルートに、deploy フォルダーを作成します。 フォルダー内で:
    • main.bicep という名前のメイン Bicep テンプレートを保存します。
    • Bicep モジュールを格納するための modules サブフォルダーを作成します。
    • デプロイ時に使用される他のスクリプトまたはファイルがある場合は、それらを deploy フォルダーに保存します。
  • リポジトリのルートで、ソース コードの src フォルダーを作成します。 それを使用してアプリケーション コードを保存します。
  • リポジトリのルートに docs フォルダーを作成します。 それを使用して、ソリューションに関するドキュメントを保存します。

次は、おもちゃ会社の Web サイトで、この構造がどのように見えるかを示す図です。

フォルダー階層を示す図。

変更のステージング

1 つまたは複数のファイルに変更を加えたら、それらをステージングする必要があります。 ステージングにより、保持するのに十分に重要な変更であるとみなしていることを Git に伝えます。 不要な手順のように見えるかもしれませんが、ステージングによって作業時の柔軟性が向上します。 たとえば、複数のファイルに変更を加えても、それらのうちの 1 つだけを保持したい場合があります。 または、1 つのファイルに加えた変更の一部だけを保持したい場合もあります。

ファイルをステージングするには、git add コマンドを使用して、ステージングするファイル名またはフォルダー名を指定します。 Git では、ファイルのステージング後、変更のコミットが望まれている可能性があると認識されます。 git status を使用してリポジトリの状態のクエリを実行すると、ステージングされた 変更が表示されます。

重要

ファイルをステージングした後で、コミットする前にさらに変更を加えた場合、Git によってそれらの変更が記録されません。 Git で最新の変更が反映されるよう、ファイルを再度ステージングする必要があります。

たとえば、Azure Cosmos DB アカウントを定義する Bicep モジュールを作成したとします。 これは cosmos-db.bicep という名前で、deploy/modules フォルダーに保存しました。 このファイルをステージングする方法を次に示します。

git add deploy/modules/cosmos-db.bicep

リポジトリのルート フォルダーから次のコマンドを実行して、リポジトリ内のすべての変更をステージングすることもできます。

git add .

ステージングされた変更をコミットする

コミットとは、リポジトリ内の 1 つ以上のファイルに対する一連の変更を表します。 ステージングした変更をコミットする準備ができたら、git commit コマンドを使用します。 コミットには、人が判読できる変更の記述であるコミット メッセージが含まれます。

以前に示したステージング済みの変更をコミットする方法を示す例を次に示します。

git commit --message "Add Cosmos DB account definition"

Note

Visual Studio Code で Git リポジトリにコミットすることもできます。 Visual Studio Code で Git 統合を使用すると、ファイルをまだステージングしていない場合に、Visual Studio Code によって、変更されたすべてのファイルを自動的にステージングするかどうかが尋ねられます。 これを既定の動作として設定することもできます。 または、必要に応じて、Visual Studio Code でソース管理を使用して、手動でファイルのステージングおよびステージング解除を行うこともできます。

コミット メッセージは短く、ただしわかりやすくします。 今後、自分やチーム メンバーがコミット履歴をレビューするときに、各コミット メッセージで変更内容とその理由が説明されている必要があります。

コミット メッセージに何を含める必要があるか、またはどのように書式設定するかに関するルールはありません。 ただし、慣例的に、コードベースに命令を出す場合と同様に、現在時制と完全文で記述されます。

ヒント

ひとりで作業している場合でも、わかりやすいコミット メッセージを記述することはよい習慣です。 将来、他の誰かがコードを調べる必要がある場合があります。 そうでなくても、自分の独自の履歴を確認する必要がある場合があり、楽に行いたいと考えます。

次に、適切なコミット メッセージの例をいくつか示します。

  • ネットワーク構成を追加するために App Service 構成を更新します。
  • Cosmos DB データベースによって置き換えられたため、ストレージ アカウントを削除します。
  • Application Insights リソース定義を追加し、関数アプリと統合します。

ファイルの履歴を表示する

ファイルを Git リポジトリにコミットしたら、git log CLI コマンドを使用して、ファイルの履歴やリポジトリに対するすべてのコミットも表示できます。

コミットの一覧を表示するには、次のコマンドを実行します。

git log --pretty=oneline

このコマンドの出力に、最新のコミットを先頭に、コミットの一覧が表示されます。 各行にはコミット ハッシュが含まれます。これは、Git によって各コミットを追跡するために内部で使用される識別子です。 また、コミット メッセージも含まれます。これは、適切なコミット メッセージを記述することが非常に重要である理由の 1 つです。

また、特定のファイルへのコミットを表示することもよくあります。 次のように、git log コマンドの実行時にファイル名を指定できます。

git log deploy/main.bicep

Git CLI と、git log コマンドには、コミットとファイルに関する情報を表示するために使用できる多くの引数が用意されています。 ただし、多くの場合、ファイルのコミット履歴を表示するには Visual Studio Code を使用する方が簡単です。

Visual Studio Code の[エクスプローラー] ウィンドウで、リポジトリ内のファイルを選択したままにして (または右クリックして)、[タイムラインの表示] を選択します。 [タイムライン] ウィンドウが開き、そのファイルに影響を与えた各コミットの一覧が表示されます。 コミットを選択すると、ファイルへの正確な変更が表示されます。 この情報の使用方法については、次の演習で説明します。