Git flow ブランチモデル方式で master にコミットする例 4/4

前回に引き続き、無料ソースコード管理 (SCM: software configuration management) ソフト Git で用いられるブランチモデルのひとつである git flow の方式で、本番環境用の master ブランチにコミットする例を紹介します。
開発用の develop ブランチから分岐させた release/xxx ブランチで、master ブランチで公開したいファイル以外を除外して、master ブランチにそれをコミットしてバージョンを表すタグ付けを行います。

git-scm 公式サイトの一部 20250408

Git-2.49.0 (64 bit) を使用します。

前回の記事

前回については以下の記事を参照してください。

コミットへのタグ付け

前回は、git flow ブランチモデルで本番環境用(公開、納品など)のコミットを置く master ブランチに、 release/github-0.1 ブランチで整えたコミットをマージしました。
git merge コマンドの実行時に、–no-ff オプションを使用して、 master ブランチにマージコミット(マージの履歴)を作成しました。

今回は、作成された現在のコミットであるマージコミットにバージョンを表すタグ付けを行います。
※以下の手順は git flow ブランチモデルの提唱を行ったページ「A successful Git branching model » nvie.com finishing-a-release-branch」を参考にしています。

現在のブランチと現在のコミットの確認の手順については、以下の記事を参照してください。

Git merge の際のメッセージ入力3

コミットタグをつけるには git tag コマンドを使います。

Create, list, delete or verify a tag object signed with GPG

GPG で署名されたタグ オブジェクトを作成、リスト、削除、または検証する

Add a tag reference in refs/tags/, unless -d/-l/-v is given to delete, list or verify tags.

タグの削除、一覧表示、または検証のために -d/-l/-v が指定されていない限り、タグ参照を refs/tags/ に追加します。

Git – git-tag Documentation と Google 翻訳

上記の引用に出てくる GPG暗号化デジタル署名を行うソフトウェアで、作成したソフトウェアや文書に対して開発者署名を付けることで、それが確かに本人によって作成されたものであることを証明するために使われます。

GnuPG is a complete and free implementation of the OpenPGP standard as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt and sign your data and communications; it features a versatile key management system, along with access modules for all kinds of public key directories. GnuPG, also known as GPG, is a command line tool with features for easy integration with other applications. A wealth of frontend applications and libraries are available. GnuPG also provides support for S/MIME and Secure Shell (ssh).

GnuPG は、RFC4880 (PGP とも呼ばれる) で定義されている OpenPGP 標準の完全かつ無料の実装です。 GnuPG を使用すると、データと通信を暗号化して署名できます。あらゆる種類の公開鍵ディレクトリへのアクセス モジュールとともに、多用途の鍵管理システムを備えています。 GPG とも呼ばれる GnuPG は、他のアプリケーションと簡単に統合できる機能を備えたコマンド ライン ツールです。豊富なフロントエンド アプリケーションとライブラリが利用可能です。 GnuPG は、S/MIME およびセキュア シェル (ssh) のサポートも提供します。

The GNU Privacy Guard と Google 翻訳

git flow ブランチモデルの提唱を行ったページ「A successful Git branching model » nvie.com finishing-a-release-branch」に書かれている git tag コマンドの -a オプションを指定すると、GPG による署名を行わず注釈付きタグをコミットにつけます。

-a
–annotate

Make an unsigned, annotated tag object

署名なしの注釈付きタグオブジェクトを作成する

Git – git-tag Documentation と Google 翻訳

タグには、注釈付きタグと、軽量タグがあります。
軽量タグは、コミットなどのオブジェクト名前を付けるだけです。
注釈付きタグでは、名前だけではなく、メタ情報(作成日、名前、メールアドレス、メッセージ)を記録したタグをコミットなどのオブジェクトに設定できます。

Tag objects (created with -a-s, or -u) are called “annotated” tags; they contain a creation date, the tagger name and e-mail, a tagging message, and an optional GnuPG signature. Whereas a “lightweight” tag is simply a name for an object (usually a commit object).

Annotated tags are meant for release while lightweight tags are meant for private or temporary object labels. For this reason, some git commands for naming objects (like git describe) will ignore lightweight tags by default.

タグ オブジェクト (-a、-s、または -u で作成) は「注釈付き」タグと呼ばれます。それらには、作成日、タガー名と電子メール、タグ付けメッセージ、およびオプションの GnuPG 署名が含まれています。一方、「軽量」タグは単なるオブジェクト (通常はコミット オブジェクト) の名前です。

注釈付きタグはリリースを目的としており、軽量タグはプライベートまたは一時的なオブジェクト ラベルを目的としています。このため、オブジェクトに名前を付けるための一部の git コマンド (git description など) は、デフォルトで軽量タグを無視します。

Git – git-tag Documentation と Google 翻訳

前回、現在のブランチである master ブランチに、 git merge -no-ff で作成したマージコミットのオブジェクトに注釈付きタグをつけるため、以下のコマンドを実行します。
※ github-0.1 はコミットにつける名前です。

git tag -a github-0.1

上記のコマンドを実行すると
hint という行には「エディターがファイルを閉じるのを待っています…」(Google 翻訳)と書かれています。

G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>git tag -a github-0.1
hint: Waiting for your editor to close the file...

hint に書かれていたように、git tag を実行すると、 Visual Studio Code アプリが起動して、コミットのメッセージを求めるタブ(TAG_EDITMSG)が開きました。
※エディタは、設定していたものが開かれます。

Git 現在のコミットオブジェクトに注釈付きタグをつける2

1行目から、注釈付きタグのメタ情報のメッセージに割り当てる、1行以上の文章入力します。
そして Ctrl + S などで保存してから、タブを閉じます。
※ Visual Studio Code では、保存しないで閉じる場合、確認ダイアログが表示されて Save ができました。

Git 現在のコミットオブジェクトに注釈付きタグをつける2

保存しないでタブを閉じると、 Visual Studio Code の場合は、確認ダイアログが表示されました。
Save ボタンを押して保存します。

Git 現在のコミットオブジェクトに注釈付きタグをつける3

コマンドプロンプトを確認すると、先ほどの git tag コマンドの実行時に表示された hint の行が消えて、コマンドの実行が完了しました。

Git 現在のコミットオブジェクトに注釈付きタグをつける4

以上で、現在のコミットに対して名前と注釈付きタグをつける作業が完了しました。

リポジトリに追加された参照の一覧で、タグの名前を確認

git tag コマンドで設定した名前は、名前を付けたコミットなどのオブジェクトを指すハッシュ値 (SHA-1) とペアになった「refs/tags/タグ名」で、ローカルリポジトリの参照のリスト管理されます。

git show-ref コマンドで、ローカルリポジトリで管理されている参照の内容を確認します。

List references in a local repository

ローカル リポジトリ内の参照を一覧表示する

Git – git-show-ref Documentation と Google 翻訳
git show-ref 

を実行すると、各 HEAD の指しているコミットオブジェクトのハッシュ値と各 HEAD の参照情報のあとの、最後の行に github-0.1 という名前がついた参照情報追加されたことが確認できました。

Git 現在のコミットオブジェクトに注釈付きタグをつける7
G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>git tag -a github-0.1

G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>git show-ref
7d24309a43ea092da2c24a46034e4770ace25ef0 refs/heads/develop
258ea47de3eb64557a50bfd32e7fba3deb82f39e refs/heads/master
214b813f771e95a9410a7c89fa277417ab623105 refs/heads/release/github-0.1
ebd3c74f7b777fdfe0a1d1e9bc0e4db438a51109 refs/tags/github-0.1

まとめ

今回は全4話で、無料ソースコード管理 (SCM: software configuration management) ソフト Git で用いられるブランチモデルのひとつである git flow の方式で、本番環境用の master ブランチにコミットする例を紹介しました。
開発用の develop ブランチから分岐させた release/xxx ブランチで、master ブランチで公開したいファイル以外を除外して、master ブランチにそれをコミットしてバージョンを表すタグ付けを行いました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました