git push/commitを忘れるなら、思い出させればいいじゃない


:::DEPRECATED:::


git add したが commit を忘れていた。コミット漏れがあって同僚に迷惑をかけた。複数のリポジトリを同時に触っていたら、片方のリポジトリをpushするのを忘れてしまった。gitを使ったことがあれば、このような失敗をしたことがあるのではないだろうか?

忘れることは人間である以上しかたない。であれば、思い出させてくれる何かがあればいい。例えば、通知センターでコミット漏れを教えてくれるだけでも十分だ。

そこで、今回作ったツールがgit-forgot。このツールは、git forgotと打つとpushやcommitがされてないリポジトリを教えてくれるものだ。

この記事では、git-forgtについて紹介したい。

インストール方法

インストールはMacであればHomebrewでできる。

brew tap suin/suin
brew install git-forgot

LinuxやWindowsはダウンロードコーナーにバイナリを配布しているのでダウンロードしてほしい。

セットアップ

git-forgotでチェックしたいディレクトリを環境変数 GIT_FORGOT_DIR に設定しておく必要がある。複数またはアスタリスクで指定できる。.gitがあるディレクトリのみチェックされるので、関係ないディレクトリが含まれていても構わない。

export GIT_FORGOT_DIR="$HOME/projects/* $HOME/github/*"

使い方

セットアップが完了したら、あとはコマンドを叩くだけでチェックできるようになる。コミット漏れやプッシュ忘れがあるリポジトリがあれば、そのパスが出る。問題なければ何も出ない。

$ git-forgot

なお、gitのサブコマンドとしても使える。

$ git forgot

リポーター(--reporter, -r)を指定すれば、通知センターに通知を送ることもできる。通知にはterminal-notifierが必要なので、インストールしておいて欲しい。

$ git forgot --reporter terminal-notifier

また、git forgot -r terminal-notifier -t iTerm のようにコンソールを-tで渡すと、通知センターの通知をクリックしたときに、該当プロジェクトを開けるようになる(m0aさん提供)。

crontabにしこんでおけば、定期的にコミット漏れなどをチェックし、通知センターで通知を受け取ることができる。

crontab
PATH=/usr/local/bin:/usr/bin:/bin

*/20 * * * * git-forgot -r terminal-notifier $HOME/projects/* $HOME/github/* > /dev/null 2>&1

pecoと組み合わせても便利。

alias gf='arr=(`git-forgot|peco`) && cd $arr[1]'

その他のオプションについては -h でヘルプを見れる。

$ git forgot -h

おわりに

コミット忘れ・プッシュ忘れが無くなるといいなと思う。なお、git-forgotはGoで書かれたオープンソースなので、いじってみたい人はGitHubを見てほしい。