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

※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 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 による署名を行わずに注釈付きタグをコミットにつけます。
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)が開きました。
※エディタは、設定していたものが開かれます。

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

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

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

以上で、現在のコミットに対して名前と注釈付きタグをつける作業が完了しました。
リポジトリに追加された参照の一覧で、タグの名前を確認
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 という名前がついた参照情報が追加されたことが確認できました。

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!
- Git
- TortoiseGit – Windows Shell Interface to Git
- A successful Git branching model » nvie.com
- Git – git-branch ドキュメント
- Git – git-rm Documentation
- Git – git-checkout Documentation
- Git – git-switch Documentation
- Git – git-log Documentation
- Git – git-restore Documentation
- Git – git-ls-tree Documentation
- Git – git-commit Documentation
- Git – git-cherry-pick Documentation
- Git – git-merge Documentation
- Git – git-tag Documentation
- Git – git-show-ref Documentation
- The Repository Browser – TortoiseGit – Documentation – TortoiseGit – Windows Shell Interface to Git
記事一覧 → Compota-Soft-Press
コメント