はじめ
最近、gitのドキュメントを読んでいます。
git履歴を確認することは現場でよく行うことです。
履歴を読み取ることは重要なので、勉強しました。
また、今後の復習のため、ポイントをメモしました。
参考先:gitドキュメント
2.3 コミット履歴の閲覧
コミット履歴の閲覧
コミットを新しい順に表示する。↓
$ git log
表示内容:
- 各コミットについてSHA-1チェックサム
- 作者名
- メールアドレス
- コミット日時
- コミットメッセージ
「git log」のよく使わせるオプション↓
オプション | 説明 |
---|---|
-p | 各コミットのパッチを表示する |
--stat | 各コミットで変更されたファイルの統計情報を表示する |
--shortstat | --stat コマンドのうち、変更/追加/削除 の行だけを表示する |
--name-only | コミット情報の後に変更されたファイルの一覧を表示する |
--name-status | 変更されたファイルと 追加/修正/削除 情報を表示する |
--abbrev-commit | SHA-1 チェックサムの全体 (40文字) ではなく最初の数文字のみを表示する |
--relative-date | 完全な日付フォーマットではなく、相対フォーマット (“2 weeks ago” など) で日付を表示する |
--graph | ブランチやマージの歴史を、ログ出力とともにアスキーグラフで表示する |
--pretty | |
コミットを別のフォーマットで表示する。オプションとして oneline, short, full, fuller そして format (独自フォーマットを設定する) を指定可能 |
各コミットで反映された変更点を表示する。↓
例えば、直近の2エントリだけを出力する。(ログ出力の制限のところで説明)
$ git log -p -2
表示内容:
- 「git log」と同じ情報を表示する
- diffを表示する
統計情報を確認↓
オプション --stat
$ git log --stat
表示内容:
- 各コミットエントリに続けて変更されたファイルの一覧
- 変更されたファイルの数、追加・削除された行数が表示される
ログをデフォルトの書式以外で出力する。↓
$ git log --pretty=oneline
--prettyのオプション
- oneline:各コミットを1行で出力する
- short
- full
- fuller
- format:独自のログ出力フォーマットを指定する
$ git log --pretty=format:"%h - %an, %ar:%s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
formatで使用できるオプション↓
オプション | 出力される内容 | 出力される内容 |
---|---|---|
%H | コミットのハッシュ | |
%h | コミットのハッシュ(短縮版) | |
%T | ツリーのハッシュ | |
%t | ツリーのハッシュ (短縮版) | |
%P | 親のハッシュ | |
%p | 親のハッシュ (短縮版) | |
%an | Author の名前 | 作業を元々行った人 |
%ae | Author のメールアドレス | |
%ad | Author の日付 (--date= オプションに従った形式) | |
%ar | Author の相対日付 | |
%cn | Committer の名前 | 作業を適用した人 |
%ce | Committer のメールアドレス | |
%cd | Committer の日付 | |
%cr | Committer の相対日付 | |
%s | 件名 |
oneline と format のオプション --graph
アスキーグラフでブランチやマージの履歴を表示する。
$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
* 11d191e Merge branch 'defunkt' into local
ログ出力の制限
コミットの一部だけを表示する
「git log」の出力を制限するためのオプション
オプション | 説明 | コマンド例 |
---|---|---|
-(n) | 直近の n 件のコミットのみを表示する | $ git log -2 |
--since, --after | 指定した日付より後に作成されたコミットのみに制限する(特定の日、相対日付可能) | $ git log --since=2.weeks |
--until, --before | 指定した日付より前に作成されたコミットのみに制限する(特定の日、相対日付可能) | $ git log --before="2008-11-01" |
--author | エントリが指定した文字列にマッチするコミットのみを表示する | $ git log --author=gitster |
--committer | エントリが指定した文字列にマッチするコミットのみを表示する | |
--grep | 指定した文字列がコミットメッセージに含まれているコミットのみを表示する | |
-S | 指定した文字列をコードに追加・削除したコミットのみを表示する | $ git log -Sfunction_name |
補足: |
- 特定の日 "2018-01-15" 相対日付 "2 years 1 day 3 minutes ago"
- author と grep を両方指定する場合は、
--all-match
オプションも一緒に使ってください。 そうしないと、どちらか一方にだけマッチするものも対象になっている