git-notesでコミットにメモをつける
2020年に「コミットログは良くならない」というのを悟ったので、現実的な解決案である「git-notesでメモを残す」について記事を書いておきます。
前回の記事
git-notes
詳細は git notes --help
を読んでください。
概要は以下の通りです。
- コミットログとは別にメモを残せる
- コミットはそのままなのでshaは変わらない
- shaが変わらないのでCIの再実行が起きない
- 他人のコミットにメモをつけられる
- 他人に作業を依頼する必要がない
- メモもリモートにプッシュできる
- 過去のコミットにメモを残せる
使い方
メモを書く
git notes edit <sha>
でメモを書くと、git log のときに一緒に表示される。
$ git notes edit d2cdf0b $ git log -1 d2cdf0b commit d2cdf0be675b44771f950697fc0b19ef0ea453f9 Merge: 25d156673e 0adcec4954 Author: Ryuta Kamizono <kamipo@gmail.com> Date: Wed Jun 17 20:29:47 2020 +0900 Merge pull request #39612 from kamipo/faster_attributes PERF: 45% faster attributes for readonly usage Notes: ActiveRrecordが速くなった。 #kamipoさんはすごい人
コミット権がないとプッシュできないですが、ローカルなら自由にメモを書ける。
メモを削除する
git notes remove <sha>
で削除できます。
メモをリモートにプッシュ(フェッチ)する
$ git push origin refs/notes/commits $ git fetch origin refs/notes/commits:refs/notes/commits
簡単にプッシュ(フェッチ)できるようにする
.git/config
に以下の設定を追加する。
[remote "origin"] url = git@github.com:sinsoku/dotfiles.git fetch = +refs/heads/*:refs/remotes/origin/* + fetch = +refs/notes/*:refs/notes/* + push = +refs/notes/*:refs/notes/*
これで普通に git fetch
や git push
できるようになります。
注意
.git/config
に設定を追加すると git push origin
の挙動が変わります。
- 変更前: 現在のブランチをプッシュ
- 変更後: notes をプッシュ
挙動が変わって困る人はエイリアスを使った方が良いです。
$ git config alias.push-notes 'push origin refs/notes/*'
参考ページ
- qiita.com
- github.blog
- GitHub はnoteをサポートしていないので、web上で表示する方法は無いです 😢