Tig(text-mode interface for git)を使う
twitterで流れてきたリンクに、CUIからgitを使うためのツールについての情報があった。早速試してみたらかなり便利だったので紹介してみる。
インストール
普通にソースコードを取得してビルド / インストールする。記事の時点での最新版0.16.2を使用したが、実際に試すときはreleasesページから最新のリリースを取得したほうがいいだろう。
% wget http://jonas.nitro.dk/tig/releases/tig-0.16.2.tar.gz
% tar -zxvf tig-0.16.2.tar.gz
% cd tig-0.16.2/
% ./configure
# (snip)
configure: error: ncurses not found
おっと、依存ライブラリ(git-core / ncurses / iconv)が不足しているらしい。手元の環境ではncurses-develが不足だったので、yumからインストールした。
% yum list | grep -i ncurses
ncurses.i386 5.5-24.20060715 installed
ncurses-devel.i386 5.5-24.20060715 base
php-ncurses.i386 5.1.6-27.el5 base
% sudo yum install ncurses-devel
気を取り直してもう一度。
% ./configure
% make
% sudo make install
% which tig
/usr/local/bin/tig
使ってみる
ビュー
機能ごとに分けられた画面をそれぞれ「ビュー」という。メインビュー、diffビュー、ログビューなどがあり、それらを行き来しながら作業することになるっぽい。
キー操作
困ったら[h]でかなり詳細なhelpが参照できる。キーバインドは基本的にvim、一部emacsバインドにも対応している。
いつものgitコマンドは[:]に続けて実行できる。“git"は省略して、「:stauts[enter]」のような入力になる。
使用例:マスタリポジトリから更新する
メインビューから
:pull origin master
ページャーモードに変更され、今回のpullで持ってきた結果がpager modeで表示される。[m]でメインビューに戻り、[R]で更新すると一覧に今持ってきたコミットが反映される。
使用例:変更をaddしてcommitする
[S]でステータスビュー。ファイルにカーソルを置いて[u]でファイルのステージング(git add) / アンステージング(git reset)、[enter]でdiff。[!]で変更を取り消し(git checkout / confirmあり)。[C]でコミット(git commit)。
感想
便利な点
とにかくメインビュー(コミットの一覧)からできる作業が便利。[t]でそのコミット時点のファイルツリーをみることができるし、コミットを選んでは[enter]でdiffを表示できる。変更を見たり追ったりするには大変便利。
不便な点
[:]で開くプロンプトがzshの強力さには及ばない。zsh + gitの場合はコマンドもファイルもtabを押すと空気読んでざくざく補完してくれるが、その辺はいっさい非対応。C-hでバックスペースもできないので、長い文字列を打ち込むのはちょっと苦痛。
まとめ
tabによる補完が利きまくる分、更新系の操作はzsh + gitのほうがやりやすいように感じた。逆に参照系はツリービュー、リビジョングラフ、マルチカラム表示など「みやすく」する工夫がたっぷりつまっているので快適そのもの。
ということで、screenの1枚に常駐させておく価値があるぐらいには便利だな、と感じた。しばらく使ってみよう。