こんにちは。SI部の藤本です。

今回は「tig」というgit CUIツールのご紹介です。

tigは、コンソール上で使えるgitブラウザです。
git をコマンドラインから使っていると、過去の diff を見るときにちょっと面倒だったり
結局、わざわざWebブラウザでGitHubを開いてコミット履歴を見たりしていました。

そこで、 tig をインストールしてみたのでご紹介します。

■セットアップが簡単ですぐ使い始められる

tigは依存関係が少なくポータブルな実装でありインストールが簡単です。
会社から提供する開発サーバーであっても、社員ひとりひとりが所有するPCやMacであっても、
yumやbrewなどのパッケージマネージャから少ない手順でインストールすることができます。
(パッケージがない環境であっても、make && make installも簡単です)

■起動も操作も簡単

起動は tig コマンドだけで済みます。
UNIXコマンドの多くはコマンドライン引数の確認・習熟が使いこなしの鍵です。
git関連コマンドも例外ではありませんが、初学コストが高いことは否めません。

tigを起動すればgitリポジトリを操作していることが自明になります。

その操作についても、基本の操作体系はviに近いところがありますが、
複雑なキーストロークは無いため癖の少ないシンプルな構成です。
不慣れなgitコマンドの操作に対して、tigによる操作はキー1つの押下で1つのアクションが実行されるため操作が容易です。

■TUIツールなため高いポータビリティ

社内の開発環境はそれぞれ異なるかと思います。
Webサイト開発事業であれば開発サーバーを立ててログインして利用することが多いかもしれませんし、
tigはTUI(ターミナル上のテキストで表現されたGUI)ツールであるため、
リモートでもローカルでもターミナル上で同じように動きます。
そのため、もし複数の事業を行っており、部署ごとにリモート環境だったりローカル環境だったりする会社であっても
tigを使えなくなることは無いかと思いますので、tigの使い方を覚えて無駄になりづらいです。

■高いカスタマイズ性

tigは使用するのにハードルが低いだけでなく、高度なカスタマイズを行い長く使える自由度も備えています。
デフォルト設定の基本操作を獲得した後は独自のコマンドをキーにバインドするなどして、
さらに使いやすいツールに仕上げていくことが簡単にできます。

■基本的な使い方

Git レポジトリ内で tig コマンドを打つと、カレントブランチの変更履歴が表示されます。
h でヘルプが見られるので、ビューの切り替え方法などの操作方法を調べることができます。

キーバインドがいろいろ用意されてます。

tig コマンドに引数を渡す事で、開き方を変えることができます。

# 特定の1つまたは複数のブランチを表示:
$ tig master new_feature

# 全てのブランチを表示:
$ tig –all

# リモートブランチの最新コミットを表示:
$ tig origin/HEAD

# 2つのブランチ間の差を表示:
$ tig test..master

# 単一ファイルの変更点を表示:
$ tig — README.rdoc

# 特定のリビジョンにおける README.rdoc ファイルの内容を表示:
$ tig show v3.2.5:README.rdoc

# README.rdoc ファイルの、ある期間のリビジョンを表示:
$ tig –after=”2012-01-01″ –before=”2012-06-11″ — README.rdoc

# README.rdoc ファイルの、直近 1 週間のリビジョンを表示:
$ tig –since=1.week — README.rdoc

コードのそれぞれの行を、誰が、いつコミットしたのかを表示:
$ tig blame README.rdoc

# 引数が何もなければ現在の branch を表示します
$ tig

# branch 名を指定できます。
$ tig test master

# 全ての branch を表示するには –all を使用します
$ tig –all

# 二つの branch 間の差を見る
$ tig test..master

# 一つのファイルの履歴を見る
$ tig — FILENAME

# 特定のリビジョンの特定のファイルを見る
$ tig show VERSION:FILENAME

# 日付の範囲内の履歴を見る
$ tig –after=”2013-01-01″ –before=”2013-04-01″ — FILENAME

■まとめ

GUIも扱いやすく便利なのですが
CUIはかゆいところに手が届くというように、細かな操作をすることが可能です。

自分もまだまだ使いこなせてはいないのですが、これから使い続けていきたいです。

上記で紹介した内容以外にもたくさんの機能があるようなので、
Git ユーザの皆さんは是非使ってみましょう !