【Git】git commit の履歴を確認する方法を初心者向けに徹底解説
はじめに
Gitを使ってファイルを管理するとき、どんな変更がいつ行われたのかを確認する場面があるのではないでしょうか。
その手がかりとして役立つのがコミット履歴です。
コミット履歴をしっかりと把握しておくと、原因不明のバグが出たときや過去の状態に戻したいときに素早く対処できます。
また、チームメンバーと共同作業を行う場合にも、誰がどの機能をどのタイミングで修正したかを追いやすくなります。
本記事では、これからGitを学び始める方に向けて、コミット履歴の意味や確認方法をわかりやすく解説していきます。
この記事を読むとわかること
- git commit 履歴の基本的な仕組みと意味
- 代表的なコマンドによる履歴の確認方法
- 実際のプロジェクトで役立つ活用事例
- 共同開発でのコミットメッセージ管理のポイント
git commit 履歴とは何か
コミット履歴とは、簡単に言うと「どのタイミングでどの変更が行われたか」という情報の集まりです。
Gitは変更内容をスナップショットのような形で保存しており、コミットを行うたびにその時点でのプロジェクトの状態を記録します。
それぞれのコミットには、特定のID(コミットハッシュ)が割り振られます。
このコミットIDを使うことで、過去のコミットと現在の状態を比較したり、特定のバージョンに戻したりすることが可能です。
コミット履歴を見ると、どのファイルが変更されたのかや、変更の理由を書いたメッセージ(コミットメッセージ)なども確認できます。
例えば、次のような疑問を持ったことはありませんか?
- 「誰がこのファイルをいつ変更したんだろう?」
- 「バグが入り込んだのはどのコミットなんだろう?」
- 「そもそも過去にどんな実装をしていたのか知りたい」
コミット履歴はこういった疑問を解決する手がかりになります。
コミット履歴を上手に活用できれば、ソフトウェア開発のトラブルシューティングが楽になりますし、レビューの効率も上がります。
git commit 履歴を確認する手順
コミット履歴を調べる上で、まずは基本的なコマンドを覚えておくと便利です。
特にgit log
は最もよく使われるコマンドなので、ここではその使い方をじっくり見ていきましょう。
git logの基礎
git log
と入力すると、現時点までに行われたコミットの一覧が表示されます。
以下はターミナルで実行した場合の例です。
git log
実行すると、下記のような情報が上から順番に出力されます。
- commit ID(40文字程度のハッシュ値)
- Author(コミットを行った人の情報)
- Date(コミットした日時)
- コミットメッセージ
この一覧をスクロールしながら目視で過去のコミット状況をたどることができます。
ただし、何もオプションをつけない状態のgit log
は詳細情報をたっぷり表示するため、慣れないうちは読みづらいかもしれません。
そんなときは、次に紹介するオプションが役に立ちます。
git logのオプション
初心者が押さえておきたい代表的なオプションをいくつか紹介します。
--oneline
1行にコミットIDとメッセージのみを表示してくれます。 履歴をざっと見たいときに使いやすいのが特徴です。
git log --oneline
--author=<名前>
特定の人が行ったコミットだけを絞り込むオプションです。 チームメンバーが多い場合などに、誰の変更かを追いたいときに便利でしょう。
git log --author="Yamada"
-p
実際の変更差分を表示するオプションです。 どのファイルのどの行が変わったのかを確認できます。
git log -p
--stat
コミットごとに、どのファイルが何行追加・削除されたかをざっくりと表示してくれます。
git log --stat
これらのオプションを組み合わせれば、必要なコミット情報を効率よく抽出できます。
慣れてきたら、--pretty
などを使って表示形式をさらにカスタマイズすることも検討してみてください。
改行のないコミットメッセージは読む側にとってわかりにくいです。コミット履歴を確認する人のためにも、重要な情報が伝わるようなメッセージの書き方を意識しておくと良いでしょう。
コミット履歴を活用する方法
履歴が確認できるようになったら、具体的にどのように活用できるのかを考えてみます。
履歴を見るだけでなく、「過去のコードを参照したい」「特定のコミットを取り消したい」といった場面で使うのが一般的です。
コミットを取り消す
「間違った内容でコミットしてしまった」という状況は、開発ではよく起こります。
そんなときに役立つコマンドがgit revert
とgit reset
です。
それぞれの特徴を簡単にまとめると、以下のようになります。
git revert <対象のコミットID>
新しいコミットとして取り消し変更を追加する手順です。 履歴を残しつつ、特定のコミット内容を打ち消すイメージになります。
git reset <対象のコミットID>
そのコミットIDの状態に戻します。 戻した後のコミット履歴は、新しいものに書き換わる点に注意が必要です。 そのため、公開済みのリポジトリでは利用を慎重に考える必要があります。
実務では、誰かと共同作業をしている場合はgit revert
を使うことが多いです。
理由としては、git reset
によって履歴が書き換わると、チームメンバーと整合性をとるのが難しくなるためです。
一方で、自分だけのローカルリポジトリで作業している場合は、git reset
を使ってサクッと手元の変更を戻すこともあります。
コミット内容を比較する
過去のコミットと現在のコミットを比較したいときはgit diff
コマンドが活躍します。
例えば、特定のコミットと最新のコミットを見比べたい場合、次のように書きます。
git diff <過去のコミットID> HEAD
これにより、どのファイルがどのように変更されたかを行単位で確認できます。
また、差分を確認するときはgit log -p
のように、-p
オプションと組み合わせて履歴をまとめて閲覧することもできます。
これらの機能を使いこなすと、不要な変更が入っていないかを発見したり、修正漏れを見つけたりといった作業がはかどるでしょう。
実務での活かし方
Gitのコミット履歴は、個人開発だけでなくチーム開発でも非常に大切な情報になります。
ここでは、実際のプロジェクトでどのようにコミット履歴を活かすのかについて紹介します。
チーム開発のコミットメッセージ管理
複数のメンバーが同時にコードを書いていると、「同じ日に似た機能の修正を行った」「誰かの変更を上書きしてしまった」というトラブルが起きやすいです。
そんなときに、コミット履歴を辿って原因を調査すると役立ちます。
特にコミットメッセージに以下の内容が含まれていると、履歴を見た人が状況を正しく把握しやすくなります。
- 変更した理由
- 変更対象の概要
- どの機能に影響を与えるのか
コミットメッセージを雑に書いてしまうと、いざ履歴を遡ったときに手がかりを得られず苦労することがあります。
ですので、一言だけのメッセージではなく、必要に応じて短い文章で状況を説明する習慣をつけると良いでしょう。
コードレビューの効率化
コミット履歴を使うと、コードレビューもスムーズになります。
例えば、Pull Request(プルリクエスト)を出す前に、自分でコミット履歴をチェックして「不要な変更が入っていないか」「コミットが細かすぎないか」を簡単に見直すことができます。
また、レビューを受ける側も受ける前に自分のコミットを整理しておくと、レビュー対応が楽になります。
逆に、膨大な量の変更を1つのコミットにまとめてしまうと、どこからレビューすればいいのかわからなくなりがちです。
そのため、実装の区切りごとにコミットを分け、コミット履歴の粒度を揃えておくと、チーム全体の生産性が高まりやすいです。
コミット履歴を整理しようとして、公開リポジトリの履歴を強制的に書き換える操作をすると、チームメンバーとの整合性が取れなくなる可能性があります。プロジェクトのルールを守りながら作業するように注意しましょう。
まとめ
コミット履歴を理解して活用することは、Gitを使いこなすうえで欠かせないポイントです。
どのコミットが、いつ、どんな修正を行ったかを正確に把握できれば、トラブルシューティングやコードレビューがしやすくなり、開発効率が向上します。
具体的には、以下の点を押さえておくと良いでしょう。
git log
コマンドを使って履歴を確認する- オプション(
--oneline
や-p
など)を使い分ける - コミットを取り消す場合は状況に応じて
git revert
やgit reset
を検討する - チーム開発ではコミットメッセージの書き方を整える
最初は難しく感じるかもしれませんが、Gitを使い続けるうちに自然とコミット履歴の意義を実感できるはずです。
気になる箇所があれば、まずは自分のローカル環境でコミット履歴の確認や取り消しの練習をしてみましょう。
そうすることで、Gitが持つ履歴管理の強みをしっかり活かせるようになっていきます。