git notes についてまとめます。
git notes とは?
git のコミットの注釈を管理するコマンドです。
注釈の追加、編集、削除、参照など様々な操作が可能です。
namespace を設定することが可能で、デフォルトでは commits ネームスペースが指定されます。
用途
コミットオブジェクトそのものを変更することなく、コミットに対して注釈(メモ)を補足できる。
例えばコミットしてからだいぶ経ってから古いコミットによるバグが発覚して、
あとからそのコミットにひも付けた注釈(メモ)を追加したい場合などです。
機能一覧
追加
# HEADのコミットにノートを追加
$ git notes add -m "Note1" HEAD
# HEADの一つ前のコミットにノートを追加
$ git notes add -m "Note2" HEAD~
# 任意のコミットにノートを追加
$ git notes add -m "Note3" <some sha1 hash>
リスト
左側のハッシュがnote本体のハッシュ。
右側のハッシュがnoteをつけたコミットのハッシュです。
$ git notes list
04ac83ee0e9b9bff9e4d5a8aa3c9945725ff9a51 8318a1b27be996a102d155c7e412846f6ddb0e1b
8de2ed665cb9306796f48d5ee9f80306267edd0b a958bd1ca331999827dc49247a8ed49ebc2f3ec3
参照
$ git notes show 8318a1b27be996a102d155c7e412846f6ddb0e1b
Note1
ログから確認
$ git log
commit 8318a1b27be996a102d155c7e412846f6ddb0e1b
Author: user
Date: Wed Sep 14 21:26:29 2016 +0900
hige
Notes:
Note1
commit a958bd1ca331999827dc49247a8ed49ebc2f3ec3
Author: user
Date: Wed Sep 14 21:16:42 2016 +0900
hoge1, hoge2
Notes:
Note2
GitHub 連携
GitHubを通して notes を共有することはできるが、WebUI はなくなってしまったようです。
あまり使われなかった、ということなのかな?
push
notes の情報は通常の push とは別に push する必要があります
$ git push origin refs/notes/commits
- ~/.gitconfig に追加
[alias]
pushnotes = "!sh -c 'git push $1 refs/notes/*' -"
- alias で呼び出し
$ git pushnotes origin
fetch
fetch も push と同じく別途 fetch する必要があります
$ git fetch origin refs/notes/commits:refs/notes/commits
- ~/.gitconfig に追加
[alias]
fetchnotes = "!sh -c 'git fetch $1 refs/notes/*:refs/notes/*' -"
- alias で呼び出し
$ git fetchnotes origin
GitHub で push した notes を確認する場合
https://github.com/<user>/<repo>/tree/refs/notes/commits
にアクセスする