はじめに
この実験では、Git タグが特定のコミットを指しているかどうかを確認する方法を学びます。git rev-parse コマンドを使って、タグに関連付けられたコミットハッシュを取得し、それを Git ログから取得した実際のコミットハッシュと比較します。
実践的な手順を通じて、簡単な Git リポジトリを作成し、ファイルを追加し、コミットを行い、タグを作成します。その後、git rev-parse を使ってタグのコミットハッシュを見つけ、Git ログから取得したコミットハッシュと比較することでその正確性を検証します。最後に、異なるタグでこのプロセスをテストして理解を深めます。
git rev-parse タグを実行する
このステップでは、特定のタグに関連付けられたコミットハッシュを見つけるために git rev-parse コマンドを使用する方法を学びます。Git のタグは、タイムライン上の永続的なマーカーのようなもので、通常はリリースポイント(v1.0、v2.0 など)をマークするために使用されます。
まず、プロジェクトディレクトリにいることを確認しましょう。ターミナルを開き、my-time-machine ディレクトリに移動します。
cd ~/project/my-time-machine
次に、簡単なファイルを作成してコミットしましょう。これにより、タグ付けする対象ができます。
echo "This is the first version." > version.txt
git add version.txt
git commit -m "Add initial version file"
コミット後、以下のような出力が表示されるはずです。
[master <commit-hash>] Add initial version file
1 file changed, 1 insertion(+)
create mode 100644 version.txt
ここで、このコミットにタグを付けましょう。v1.0 という名前のタグを付けます。
git tag v1.0
このコマンドは何も出力しませんが、現在のコミットを指す v1.0 という名前の軽量タグが作成されました。
リポジトリ内のタグを表示するには、git tag を使用できます。
git tag
以下のように表示されるはずです。
v1.0
次に、git rev-parse を使用して、v1.0 タグが指すコミットハッシュを見つけましょう。
git rev-parse v1.0
このコマンドは完全なコミットハッシュを出力します。
<full-commit-hash>
git rev-parse コマンドは、さまざまな Git 参照(タグ、ブランチ、または部分的なコミットハッシュさえも)を完全なコミットハッシュに変換するのに非常に便利です。これは、スクリプト作成や他の Git 操作でコミットの正確な識別子が必要な場合に役立ちます。
コミットハッシュと比較する
前のステップでは、git rev-parse v1.0 を使用して v1.0 タグに関連付けられたコミットハッシュを取得しました。今度は、このハッシュを Git ログからの実際のコミットハッシュと比較して、両者が同じであることを確認しましょう。
まず、引き続き ~/project/my-time-machine ディレクトリにいることを確認してください。
cd ~/project/my-time-machine
次に、git log --oneline を使用してコミットログを表示しましょう。--oneline オプションを使用すると、各コミットが 1 行で表示され、コミット履歴とその短縮ハッシュをすばやく確認するのに便利です。
git log --oneline
以下のような出力が表示されるはずです。
<short-commit-hash> (HEAD -> master, tag: v1.0) Add initial version file
行頭の短縮コミットハッシュに注目してください。これは完全なコミットハッシュの省略版です。また、このコミットの横に v1.0 タグが表示されており、このタグがこの特定のコミットを指していることがわかります。
次に、再度 git rev-parse v1.0 を使用して完全なコミットハッシュを取得しましょう。
git rev-parse v1.0
これにより、完全なコミットハッシュが出力されます。
<full-commit-hash>
git rev-parse からの完全なコミットハッシュと git log --oneline からの短縮コミットハッシュを比較してみましょう。短縮ハッシュは完全なハッシュの最初の数文字です。両者は同じコミットを指しています。
この比較により、git rev-parse <タグ名> が指定されたタグが指すコミットハッシュを正常に取得できることが示されます。これは Git の基本的な概念です。タグは単に特定のコミットを指すポインターです。この関係を理解することは、プロジェクトの履歴を効果的にたどるための重要なポイントです。
異なるタグをテストする
このステップでは、別のコミットと別のタグを作成し、異なるタグで git rev-parse を使用する練習をさらに進めます。これにより、タグがプロジェクトの履歴内の特定のコミットを指す仕組みに対する理解が深まります。
まず、~/project/my-time-machine ディレクトリにいることを確認してください。
cd ~/project/my-time-machine
次に、version.txt ファイルを変更し、新しいコミットを作成しましょう。
echo "This is the second version." >> version.txt
git add version.txt
git commit -m "Update version file to v2"
コミット後、以下のような出力が表示されるはずです。
[master <new-commit-hash>] Update version file to v2
1 file changed, 1 insertion(+)
これで新しいコミットが作成されました。この最新のコミットに v2.0 という別のタグを付けましょう。
git tag v2.0
再び、このコマンドは何も出力しませんが、タグが作成されます。
次に、リポジトリ内のすべてのタグを一覧表示しましょう。
git tag
両方のタグが表示されるはずです。
v1.0
v2.0
最後に、git rev-parse を使用して、新しいタグ v2.0 のコミットハッシュを取得しましょう。
git rev-parse v2.0
これにより、v2.0 タグを作成したコミットの完全なコミットハッシュが出力されます。
<full-commit-hash-for-v2>
また、git rev-parse を使用して v1.0 タグのハッシュを再度取得すると、依然として元のコミットを指していることがわかります。
git rev-parse v1.0
これにより、v1.0 タグを作成したコミットの完全なコミットハッシュ(ステップ 1 で見たのと同じハッシュ)が出力されます。
<full-commit-hash-for-v1>
異なるタグ名で git rev-parse を使用することで、プロジェクトの各タグ付きバージョンに関連付けられた特定のコミットハッシュを簡単に取得できます。これは、プロジェクトの履歴をたどり、特定のリリースポイントを参照するのに非常に便利です。
まとめ
この実験では、Git のタグが特定のコミットを指しているかどうかを確認する方法を学びました。まず、git rev-parse <タグ> コマンドを使用して、指定されたタグに関連付けられたコミットハッシュを取得しました。このコマンドは、さまざまな Git 参照を完全なコミットハッシュに変換する強力なツールです。
次に、git rev-parse から取得したコミットハッシュを Git ログに記載されている実際のコミットハッシュと比較し、タグが実際に期待されるコミットを指していることを検証しました。このプロセスにより、タグが表す正確なコミットを確認でき、これはリリース管理やプロジェクト履歴内の特定のポイントを追跡する上で重要です。



