gitで前回のコミットから数行程度の修正しかない小規模なコミットするときにいちいちコミットメッセージを書くのが面倒なので(かつ、どのコミットに対する修正か分かりやすくしたいので)、直前のコミットメッセージを取得し、それに「小規模な変更」を示す「small change: 」という定型文を加えてコミットメッセージに代えることに。
そこで、git commit
に前回のコミットメッセージに「small change: 」を付け加えた文字列をパイプで渡して、コミットメッセージを自動生成するコマンドを作成しました。
結論
git log -p -1 | grep " " | cut -c 5- | sed "s/^/small change: /" | git commit --file=-
でいけるます。grepに指定している文字列の空白文字は半角4文字です。
以下、解説という名の蛇足。
git log -1
1個前のコミット情報を抜き出す。
% git log -1
Author: YotioSoft <ytani0323@gmail.com>
Date: Mon Aug 29 22:07:44 2022 +0900
update README
grep “ ”
前者で取得した1個前のコミット情報からコミットメッセージの文字列を抜き出す。git log -1
ではコミットメッセージの前に空白文字4文字が挿入されるので、それがある行を切り出し。
% git log -p -1 | grep " "
update README
cut -c 5-
5文字目以降を切り出す。これで文字列先頭部分の空白文字が消去される。
% git log -p -1 | grep " " | cut -c 5-
update README
sed “s/^/small change: /”
「small change: 」という文字列を行頭に挿入する。文字列に関してはお好みに。
% git log -p -1 | grep " " | cut -c 5- | sed "s/^/small change: /"
small commit: update README
git commit –file=-
最後に生成した文字列をコミットメッセージにしてコミット。--file=-
で標準入力から文字列を取得します。(あ、もちろんその前にgit add
しとくことを忘れずに)
% git log -p -1 | grep " " | cut -c 5- | sed "s/^/small change: /" | git commit --file=-
[develop c8daaf3] small change: update README
1 file changed, 2 insertions(+), 2 deletions(-)
おわりに
コマンドが長ったらしいので、これをシェルスクリプトなりに保存してパスを通しておくと便利かと思います。