LoginSignup
0
2

More than 1 year has passed since last update.

git commitするだけでコミットメッセージの自動追加と自動プッシュ

Last updated at Posted at 2021-12-03

はじめに

git commit -am "コミットメッセージ" をよく使うのですが、コミットメッセージに自動で今の時間が追加されて、その後にpushまでしてくれたら嬉しいですよね。
gitのhooksでそれを実現しました。なお、このスクリプトはBSD版シェルで動作します。

作ったもの

git commit -am "コミットメッセージ" を実行すると、

2021-12-04-00:00:00
コミットメッセージ

というコミットメッセージでコミットされる。同時にgit pushが実行される。

やり方

1. .git/hooks/prepare-commit-msgを作る。
2. prepare-commit-messageを次のように編集する。

prepare-commit-msg
#!/bin/sh
COMMIT_MSG_FILE=$1
echo "prepare-commit-msg"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
sed -i '' -e "1i\\
$DATE" $COMMIT_MSG_FILE
cat $COMMIT_MSG_FILE

これはコミットメッセージの1行目に現在時刻を挿入するスクリプトです。OSXのBSD版shellでsedコマンドを正常に動かすためにsedの途中で改行を入れています。
ここでは確認のために内容を出力しています。

3. .git/hooks/post-commitを作る。
4. post-commitを次のように編集する。

post-commit
#!/bin/sh
echo "hook post-commit"
git push

補足

初回pushでの--set-upstreamを自動で設定するために、
git config push.default current
を予め実行しておくとより使いやすいと思います。

また、hooksの実行を停止するオプションはありません。pre-commitとcommit-messageフックは--no-verifyオプションでオフにできますが、post-commitとprepare-commit-messageには効かないからです。
これは、この2つのフックの想定されている使い道がこのような自動化でないからだと考えられます(参考:Git Hooks)。使用する際は、個人リポジトリで使うのが賢明かもしれません。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2