こんにちは!
皆さんは git log で履歴を眺めて、気になるコミットを git show して、また log に戻って……と往復して疲れたことはないでしょうか?
GUI の Git クライアントを開くのも面倒ですし、SSH 先や WSL の中だとそもそも使えません。
そんなときに強い味方が tig です!
§ 要約
tig は Git 用の TUI(ターミナル UI)です。
- Ubuntu / Debian なら apt 一発で入る
- コミットログ・diff・blame・stash・status がキー操作だけで見られる
- GUI を開かず、ターミナルから出なくてよい
- lazygit より「見る」ことに特化していて軽い
以上!終わり!
正直それで終わりにしてもいいのですが、せっかくなのでもう少し説明します。
§ tig とは
公式サイトはこちらです。
Jonas Fonseca さんが作っている、ncurses ベースの Git フロントエンドです。
Git の代替ではなく、Git の中身を快適に眺めるための道具だと思ってください。
知らんけど、一度慣れると git log 単体には戻りにくくなります。
§ インストール
¶ Ubuntu / Debian
$ sudo apt install tig
¶ macOS
$ brew install tig
入ったかの確認はこれだけです。
$ tig -v
§ とりあえず起動
リポジトリのルートで叩くのが基本です。
$ tig
メイン画面(コミットグラフ)が開きます。だいたいこんな感じです。
コミットを選んで Enter すると、下ペインに diff が出ます。
実際の配色や列は環境によって違いますが、履歴とブランチが一画面で見えるのがポイントです。
よく使う起動の仕方はこんな感じです。
# 作業ツリーの状態
$ tig status
# ファイルの blame
$ tig blame path/to/file
# remote ブランチだけ見たい
$ tig --remotes
# origin だけ
$ tig --remotes=origin
# local + remote + tag ぜんぶ
$ tig --all
tig -a(--all)は全部入りです。
remote だけ見たいときは tig --remotes を使いましょう。
§ 画面の見方
tig にはいくつかのビューがあります。ざっくりだけ。
| ビュー | 何が見えるか |
|---|---|
| main | コミット履歴・グラフ |
| diff | そのコミットの差分 |
| tree | ツリー上のファイル |
| refs | ブランチ・タグ・remote |
| grep | リポジトリ内検索 |
| stash | stash 一覧 |
| status | 変更ファイル・ステージ状態 |
普段は main と diff、あとは status を開けばだいたい足ります。
§ 毎日使うキー
全部覚える必要はありません。これだけで戦えます。
| キー | 意味 |
|---|---|
| j / k | 下 / 上に移動 |
| Enter | 詳細を開く(main なら diff) |
| q | 戻る。一番上なら終了 |
| h | ヘルプ |
| / | 検索 |
| u | status で stage / unstage |
困ったら h です。助けは近くにあります。
§ 最小の ~/.tigrc
最初はほぼデフォルトで十分です。
気になるなら、線の種類とタブ幅くらい触ればよいです。
# ~/.tigrc の例(やりすぎない)
set line-graphics = utf-8
set tab-size = 4
カスタマイズ沼に入ると楽しいのですが、まずは素のまま使い倒しましょう。
§ lazygit との違い
よく比較される lazygit との使い分けです。
| tig | lazygit | |
|---|---|---|
| 得意 | 履歴・diff・blame を速く見る | stage / commit / push などの操作 |
| 操作感 | Vim ライクで軽い | メニューが多くて高機能 |
| SSH 先 | 特に相性がよい | もちろん使えるが少し重いことも |
見るなら tig、まとめて操作するなら lazygit、くらいの感覚でよいと思います。
両方入れておいて損はないです。
§ まとめ
tig の最大の利点は、ターミナルから出なくていいことです。
まずはこれだけ試してみてください。
$ tig
$ tig status
慣れたら tig --remotes や tig blame もどうぞ。
Git を眺める日常が、ちょっとだけ快適になります!