139
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gitでcommitやpushを忘れることありませんか?git-remindはそういう「忘れ」を防ぐためのツールです

Last updated at Posted at 2018-10-30

うっかりGitのコミットやプッシュを忘れてしまうことはないだろうか? git-remindはそんな(僕のような)忘れっぽい人のためのツールで、Gitリポジトリの状態を監視して、git commitやgit pushがなされていないリポジトリを見つけ教えてくれる。

主な機能

git commit/git pushしてないリポジトリの一覧機能

複数のGitプロジェクトを横断して、コミットされていないファイルがあるリポジトリや、コミットはされているけどgit pushがまだされていないリポジトリを見つけ出して一覧にしてくれる。

demo-git-remind-status.png

デスクトップ通知

未コミット、未プッシュのリポジトリを一覧できる他に、それらのリポジトリがあればデスクトップ通知で教えてくれる機能もある。macOSの場合、通知センターに表示される。試したのはmacOSだけだが、git-remindの内部実装としてはgen2brain/beeepというクロスプラットフォームのデスクトップ通知ライブラリを使っているので、macOSに限らずWindowsやLinuxでも通知が受け取れると思われる。

demo-notification.png

インストール方法

Homebrewでインストールする方法

macOSならHomebrewでインストールするのが手軽だ。

brew install suin/suin/git-remind

Windows向けやLinux向けには、releasesにてビルド済みバイナリが公開されているのでダウンロードして使う。

設定手順

コミット忘れをチェックしたいGitリポジトリは、~/.gitconfigにて絶対パスで指定する。

.gitconfig
[remind]
	paths = /Users/you/projects/foo,/Users/you/projects/bar

なお、同じディレクトリに複数Gitリポジトリがある場合は、ワイルドカードを使うこともできる。例えば、~/projects/foo~/projects/barを監視したい場合、/Users/you/projects/*のようにまとめて指定することができる。

.gitconfig
[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設定:

cron
PATH=/usr/local/bin:/usr/bin:/bin

*/20 * * * * git-remind status-notification > /dev/null 2>&1

未コミット/未プッシュがあるリポジトリにジャンプする

fzfコマンドと組み合わせると、未コミット/未プッシュがあるリポジトリにジャンプできるようになり便利である。

cd $(git remind status -n | fzf)

demo-fzf.gif

このコマンドを簡単に起動できるように.bashrcや.zshrcにエイリアスを定義しておくと良いだろう。

alias grj='cd $(git remind status -n | fzf)'

参考

139
86
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
139
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?