24
24

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 push/commitを忘れるなら、思い出させればいいじゃない

Last updated at Posted at 2014-08-25

:::DEPRECATED:::


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

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

Screen Shot 2014-08-25 at 11.12.22.png

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

2__Shell.png

この記事では、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を見てほしい。

24
24
2

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
24
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?