日報とか週報とかの提出を求められる時、いちいちテキストを書くのがメンドーなのでgit log
をテキストファイルとして出力したいと思いました。
1. 今日とか1週間とかの git log をいい感じにして表示する
1週間分の自分のコミットを [YYYY-MM-DD] ハッシュ: コミット時のコメント
で表示するコマンドは次のような感じでできました。
git log --oneline --branches --reverse --author="$(git config user.name)" --date=iso --since="1week" --pretty=format:"[%ad] %h: %s"
※ 長いから改行しているけど、コマンドラインなら1行で
使用しているオプションの説明
--branches
全てのブランチを対象にする。
オプションがないと今いるブランチのみが対象になる--author
author="name"
で指定したAuthorのlogだけを取得
"$(git config user.name)"
とすれば .gitconfig にある user.name が対象になる--date
date="sio"
- “YYYY-MM-DD HH mm ss フォーマットdate="short"
- YYYY-MM-DD フォーマットiso
だと時刻が表示されてしまうので、作業時間がバレるのは ちょっとなー って場合はshort
を指定したほうが良さそう--since
いつのコミットから表示するか
日報のように今日の分だけなら--since="today"
--since="2017-06-25"
のように日付を指定することもできる--pretty=format:
log を表示するフォーマット%ad
- コミットした時間 (-date= オプションに従った形式)%h
- コミットのハッシュ (短縮版)%s
- コミットコメント その他、詳しいオプションについては「git logのフォーマットを指定する - Qiita」に詳しく載っています
2. git log をファイルに出力する
いい感じの git log の表示オプションが作れたら、次はlogをファイルに出力します。
ファイルへの出力はコマンドの最後に > ファイル名
をつけるだけ。
log.txt というファイルを作って出力する場合は次のような感じ
git log --oneline --branches --reverse --author="$(git config user.name)" --date=short --since="1week" --pretty=format:"[%ad] %h: %s" > log.txt
※ 長いから改行しているけど、コマンドラインなら1行で
コマンドを実行すると、コマンドを実行した場所に log.txt が作成されます。
3. 作成したgit logのコマンドをエイリアス化して、日付を引数で渡せるようにする
毎回この長いコマンドを実行するのもメンドーなので、コマンドをエイリアス化して、開始日(since)の指定をオプションで渡せるようにしたいと思います。
git コマンドの エイリアスはglobalなら.~/.gitconfig
に、現在の作業リポジトリなら .git/config
ファイルに記入されるので、ここに直接コマンドを書いてエイリアスを作成します。
今回は、あるプロジェクトでだけ使いたかったので、リポジトリ内の .git/config
に下記のエイリアスコマンドを追記しました。
[alias] logfile = "!f () {\ git log --oneline --branches --reverse --date=short\ --author=\"$(git config user.name)\"\ --pretty=format:\"[%ad] %h: %s\"\ --since=\"$1\"\ > ../log.txt;\ };f"
コマンドのエイリアス名は logfile
としました。
で、この作業リポジトリ内で 次のようなコマンドを実行すると、、、
$ git logfile today
本日のコミットログをリポジトリのあるディレクトリの1つ上の階層に log.txt
ファイルとして書き出せるようになりました!
₍₍ ᕕ(´ ω` )ᕗ⁾⁾ ヤッタゼ
global のエイリアスにする場合は ログファイルの書き出し先のパスをデスクトップにするとか適時工夫する必要があるかと思います。
[参考]
- “git log” で今日行った作業を表示&ファイル出力するときの注意 - Qiita
- git logのフォーマットを指定する - Qiita
- How do I export a git log to a text file? - Stack Overflow
- Gitのエイリアスで引数を使う

- 作者: Travis Swicegood
- 出版社/メーカー: オーム社
- メディア: Kindle版
- この商品を含むブログを見る