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枚に常駐させておく価値があるぐらいには便利だな、と感じた。しばらく使ってみよう。