うっかりGitのコミットやプッシュを忘れてしまうことはないだろうか? git-remindはそんな(僕のような)忘れっぽい人のためのツールで、Gitリポジトリの状態を監視して、git commitやgit pushがなされていないリポジトリを見つけ教えてくれる。
主な機能
git commit/git pushしてないリポジトリの一覧機能
複数のGitプロジェクトを横断して、コミットされていないファイルがあるリポジトリや、コミットはされているけどgit pushがまだされていないリポジトリを見つけ出して一覧にしてくれる。
デスクトップ通知
未コミット、未プッシュのリポジトリを一覧できる他に、それらのリポジトリがあればデスクトップ通知で教えてくれる機能もある。macOSの場合、通知センターに表示される。試したのはmacOSだけだが、git-remindの内部実装としてはgen2brain/beeepというクロスプラットフォームのデスクトップ通知ライブラリを使っているので、macOSに限らずWindowsやLinuxでも通知が受け取れると思われる。
インストール方法
Homebrewでインストールする方法
macOSならHomebrewでインストールするのが手軽だ。
brew install suin/suin/git-remind
Windows向けやLinux向けには、releasesにてビルド済みバイナリが公開されているのでダウンロードして使う。
設定手順
コミット忘れをチェックしたいGitリポジトリは、~/.gitconfig
にて絶対パスで指定する。
[remind]
paths = /Users/you/projects/foo,/Users/you/projects/bar
なお、同じディレクトリに複数Gitリポジトリがある場合は、ワイルドカードを使うこともできる。例えば、~/projects/foo
と~/projects/bar
を監視したい場合、/Users/you/projects/*
のようにまとめて指定することができる。
[remind]
paths = /Users/you/projects/*
~/.gitconfig
に設定を書いたら下記コマンドで設定を確認する。
git-remind paths # .gitconfigに書かれたパスを復唱するコマンド
git-remind repos # 監視対象のリポジトリ一覧を表示するコマンド
使い方
コミット/プッシュの状態を表示する
git-remind status
コマンドを叩くと、コミットやプッシュがされていないリポジトリの一覧を見ることができる。
$ git-remind status
Need to commit: /Users/suin/projects/myapp1
Need to commit and push: /Users/suin/projects/myapp2
git status -s
風の短めの表示
git remind status
に-s
オプションを付けると短めのステータス表示が出る。
$ git-remind status -s
C /Users/suin/projects/myapp1
CP /Users/suin/projects/myapp2
- C (Need to Commit)... コミットが必要な状態
- P (Need to Push)... プッシュが必要な状態
- U (Up-to-date) ... 最新(コミットもプッシュも不要)な状態
全リポジトリの状態を表示する
git remind status
に-a
オプションを付けると、コミットやプッシュが必要ないリポジトリも含めて、全リポジトリの状態が表示される。
$ git-remind status -a
Need to commit: /Users/suin/projects/myapp1
Need to commit and push: /Users/suin/projects/myapp2
Up-to-date: /Users/suin/projects/myapp3
デスクトップ通知
下記コマンドを実行するとデスクトップ通知を上げることができる。
git-remind status-notification
応用的な使い方
定期的にデスクトップ通知を上げる (cron)
定期的にデスクトップ通知を受け取るにはcronと組み合わせる。下記の例は20分毎に通知を上げるcron設定:
PATH=/usr/local/bin:/usr/bin:/bin
*/20 * * * * git-remind status-notification > /dev/null 2>&1
未コミット/未プッシュがあるリポジトリにジャンプする
fzfコマンドと組み合わせると、未コミット/未プッシュがあるリポジトリにジャンプできるようになり便利である。
cd $(git remind status -n | fzf)
このコマンドを簡単に起動できるように.bashrcや.zshrcにエイリアスを定義しておくと良いだろう。
alias grj='cd $(git remind status -n | fzf)'