gitshでgitのタイプ数を減らす

gitはサブコマンドやオプションが多い.だからshellのaliasやらgitのaliasで頑張ってコマンドのタイプ数を減らす.Thoughbotの@georgebrockさんのgitshを使えばもっとコマンドのタイプ数を減らすことができる.

例えば以下はよく打つコマンド.gitって打ち過ぎ.

$ git status
$ git add -u
$ git commit -m "Commit message"
$ git push

gitshを使うと専用のモードへのアタッチが始まり,gitを打たずサブコマンドだけを打てばよくなる.

$ gitsh
gitsh@ status
gitsh@ add -u
gitsh@ commit -m "Commit message"
gitsh@ push
gitsh@ :exit

gitのaliasも引き継がれるので,例えば以下のようなaliasを設定してしておくと,さらにタイプ数を減らすことができる.

#.gitconfig
[alias]
  au = add -u
  cm = commit -m
  p  = push
$ gitsh
gitsh@ ⏎ # status
gitsh@ au
gitsh@ cm "Commit message"
gitsh@ p
gitsh@ :exit

サブコマンドなしで⏎ (return)するとデフォルトではgit statusが表示される.デフォルのコマンドは以下で変更可能.

gitsh@ config --global gitsh.defaultCommand "status -s"

もっと減らす.

#.zshrc
alias g="gitsh"

インストールはOSXならHomebrew経由でいける.

$ brew tap thoughtbot/formulae
$ brew install gitsh

tmuxのsplit-windowと連携するのも良さそう.以下のようにすれば,”Prefix+C-g”で画面分割してgitshモードへ入る.(@958さんありがとうございます.)

#.tmux.conf
bind C-g split-window -v -p 20 'exec gitsh'

gitのコマンドは連続で打つこと多いので理にかなってるツールだと思う.aliasが引き継がれるので移行も楽.他にも,一時的にconfigの設定(user.nameuser.email)を切り替えたり,プロンプトにブランチとかの情報を表示したり,普通のshellのように環境変数を設定したり,hubコマンド使ったりもできる.

参考