記事の概要
Gitは多くの開発現場で使われているバージョン管理システムで、その開発の履歴を確認する時のコマンドとしてgit log
が使用されています。しかし、特定の用途ではgit shortlog
の方がより簡単に目的を達成できるケースがあります。
この解説記事では、git shortlog
ついて、git log
との違いにもフォーカスを当てて説明していきます。
この記事で学べること
- git logの概要と活用方法
- git shortlogの概要やユースケースとgit logとの違い
- git shortlogの実際の活用方法と応用的な使い方
そもそもgit logとは?
git logの概要
git log
は、Gitリポジトリのコミット履歴を表示するためのコマンドです。指定したブランチ、もしくはHEADが指すコミットから親コミットを遡って、各コミットの情報(コミットハッシュ、作者、日付、コミットメッセージなど)が表示されます。そのためgit log
は、プロジェクトの変更履歴を追跡したり、特定のコミットの詳細を確認したりする際に使用します。
$ git log
commit 2409dadee35624888781b9f146e75823a971b516 (origin/feature)
Author: Risa
Date: Tue Feb 20 23:17:59 2024 +0900
[add]メール送信機能を追加
commit 0cbdfb377cb109326388bb74e72075197d7c4292
Author: Fred
Date: Tue Feb 20 23:03:56 2024 +0900
[mod]設定値の変更
commit e78ac956a6303545b07886d356462ada0088d16c
Author: Risa
Date: Tue Feb 20 23:01:55 2024 +0900
[add]ユーザー機能を追加
git logのオプションと応用的な使い方
git log
は以下のような応用的な使い方ができます
git log --oneline
:各コミットを一行で簡潔に表示します。git log --graph
:ブランチとマージの履歴をASCIIアートのグラフで表示します。git log --since="2 weeks ago"
:revision-range(後に説明)を使用して、特定の期間に行われたコミットを表示します。git log -S "specified_code"
:特定の文字列やコードが追加または削除されたコミットを検索します。正規表現をサポートしているため、柔軟な検索ができます。git log --author “name(もしくはemail)”
指定したコミッターのコミットのみを表示します。こちらも正規表現をサポートしています。
git shortlogとは?
git shortlogの概要
git log
について改めて理解したところで、git shortlog
の使い方について学んでいきましょう。git shortlog
とは、そのリポジトリへ誰がどれくらいコミットしたのかが簡単にわかるようになるコマンドです。git log
ではコミットしたのが誰かはAuthorとしては表示されますが、誰がどれくらいコミットしたのかを簡単に表示することはできませんでした。git log
がそのリポジトリの履歴の詳細を見るためのコマンドなのに対し、 git shortlog
は、「誰が」、「どんなコミット」を、「どれくらい」したかが一目でわかります。そのため、特にチームメンバーの貢献度を概観するのに適しています。
なぜgit shortlogが必要なのか
git shortlog
のユースケースにはどのようなものがあるでしょうか。例えば、開発の際にプロジェクトリーダーが各メンバーの作業の進行状況やコミット数を確認したい時や、どのようなバグ修正やプログラムの変更があったのかを作業者別に調べてリリースノートにまとめるような時が挙げられるでしょう。
コマンドの活用方法
git shortlog
をプロジェクトのリポジトリで実施すると、以下のようにコミッターがアルファベット順(大文字優先)で、それぞれのコミッターで分割されたコミットメッセージは過去のものが上になるように表示されます。また、名前の次に()の中で書かれた数字は、そのコミッターのコミット数を表します。
コマンドを実施する際の基本形は、git shortlog <branch/commit_id>
であり、<>の箇所にブランチ名、もしくはコミットID入力することで指定したコミットまでの表示に限定することができます。省略した場合はデフォルトでHEADの指すブランチ、コミットが指定されます。また、複数のブランチやコミットを同時に指定することもできます。
$ git shortlog feature
Fred (1):
[add]README.mdを追加する
Risa (4):
[fix]~のバグを修正する
[add]スキーマファイルを定義する
[mod]README.mdに起動方法を記載する
[fix]PRコメントの対応 〜を修正
Satoshi (2):
[add]リポジトリ層を追加する
[fix]~バグを修正する
ai (4):
[mod]検索機能をリファクタリング
[add]ユーザー認証機能をAPIに追加
[fix]ライブラリのバージョンが古くクラッシュする問題を修正
[improve]データベースクエリのパフォーマンスを改善
※git log
での最新のコミットが一番上にあり親コミットが下に続いていた順序と逆になっています。この表示順序の違いは、git logとgit shortlogの目的の違いに由来しています。git logは時系列でのコミット追跡に重点を置いているのに対し、git shortlogはコミッターごとの活動概要の提示に重点を置いているためです。
オプション
git shortlog
には以下のオプションがあります。
オプション | ロングバージョン | 説明 |
---|---|---|
-n | --numbered | コミッターの表示順序をコミット数順に整列する |
-s | --summary | 各コミッターのコミット数のみを表示する |
-e | 各コミッターの名前に加えてメールアドレスを表示する |
全て同時に使用するとこのような結果になります。
$ git shortlog -ens feature
4 Risa <risa@example.com>
4 ai <ai@example.com>
2 Satoshi <satoshi@example.com>
1 Fred <fred@example.com>
応用的な使い方
時間範囲の指定
「revision-range」と呼ばれるgitコマンドに共通のオプションを用いることで、指定した時間の範囲でgit shortlog
コマンドを実施することができます。その結果で誰か特定のコミッターの履歴を詳細に確認したくなったら、git log
で同じように時間範囲指定をしてそのコミッターのコミットの詳細を表示しましょう。
git shortlog -ns --since="<start_date>" --until="<end_date>"
# 期間指定でコミッターとコミット数を表示
git log --author="<name>" --since="<start_date>" --until="<end_date>"
# 期間指定で特定のコミッターのコミット詳細を表示
時間指定の方法
<start_date>や<end_date>には以下の形式で時間を指定することができます。
日付形式 | 説明 | 例 |
---|---|---|
完全な日付形式 | ||
YYYY-MM-DD | 年-月-日 | 2023-04-19 |
YYYY.MM.DD | 年.月.日 | 2023.04.19 |
YYYY/MM/DD | 年/月/日 | 2023/04/19 |
相対的な日付形式 | ||
<n> years ago | n年前 | 1 year ago |
<n> months ago | nヶ月前 | 3 months ago |
<n> weeks ago | n週間前 | 4 weeks ago |
<n> days ago | n日前 | 5 days ago |
<n> hours ago | n時間前 | 6 hours ago |
<n> minutes ago | n分前 | 7 minutes ago |
<n> seconds ago | n秒前 | 8 seconds ago |
まとめ
これらのコマンドを効果的に使い分けることで、プロジェクト管理がより効率的かつ効果的に行えるようになります。
最後に、本記事の内容をまとめます。
- 2つのコマンドの違い
git log
は対象のブランチの履歴とコミットの詳細を最新のコミットから親コミットを辿って表示するのに対し、git shortlog
はコミッターごとのコミット数とその概要を表示することができます。
- ユースケース
git shortlogはプロジェクトリーダーなどが各開発者の状況、コミット量を把握する必要がある時や、コミッターごとにコミットの内容を簡単に表示したい時に使うことができます。
- オプションと使い方
表示順序や表示の粒度を変更するオプションがあり、revision-rangeと組み合わせることで時間範囲を指定してコマンドを実施することができます。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.05.27
ソースコードにパッチファイルを適用するGitコマンド「git apply」について徹底解説!
この記事では「git apply」コマンドについて解説します。
- git
2024.05.27
Gitコマンドでバグが混入したコミットを見つける!便利な「git bisect」コマンドを徹底解説
バグの原因となったコミットが何なのか最速で知りたい!という方向けに、この記事では「git bisect」コマンドについて解説します。
- git
2024.06.02
Gitコマンド「git fsck」とは?リポジトリの安定を保つサポートツールを紹介
今回は、安定したリポジトリ運用をサポートする「git fsck」を解説します。様々なGitコマンドを習得し、Gitマスターを目指しましょう!
- git