TAKASHI YAMASHINA software engineer

tigの使い方 - ターミナルでGitを快適に操作

tigは、ターミナル上で動作するGitリポジトリブラウザです。コミット履歴、差分、ブランチなどを視覚的に確認でき、対話的にステージング操作も行えます。コマンドラインでGitを使う人にとって必須のツールです。

インストール

macOS

bash
brew install tig

Ubuntu/Debian

bash
sudo apt install tig

その他

bash
# Fedora
sudo dnf install tig

# Arch Linux
sudo pacman -S tig

# ソースからビルド
git clone https://github.com/jonas/tig.git
cd tig
make
sudo make install

基本的な使い方

tigを起動

bash
# カレントディレクトリのリポジトリを開く
tig

# 特定のファイルの履歴を表示
tig path/to/file.js

# 特定のブランチを表示
tig main

# コミット間の差分を表示
tig main..feature

基本操作

起動後の基本的なキー操作:

plain
j/k または ↓/↑  : 上下に移動
Enter          : 詳細を表示
q              : 現在のビューを閉じる
Q              : tigを終了
h              : ヘルプを表示

メインビュー(コミット履歴)

bash
tig

表示内容:

plain
2025-01-07 12:34 John Doe    o [main] Add new feature
2025-01-06 18:22 Jane Smith  o Fix critical bug
2025-01-06 10:15 John Doe    o Update documentation
2025-01-05 15:40 Jane Smith  o Initial commit

操作:

主要なビュー

メインビュー: コミット履歴

bash
# tigを起動(デフォルトはメインビュー)
tig

# または明示的に
tig show

diffビュー: 差分表示

bash
# 未コミットの変更を表示
tig status

# または、メインビューから`d`キー

ログビュー: シンプルな履歴

bash
tig log

stageビュー: 対話的なステージング

bash
tig status

操作:

blamビュー: 行ごとの変更者

bash
# 特定のファイルのblameを表示
tig blame path/to/file.js

# または、メインビューから`B`キー

各行がいつ、誰によって変更されたかを表示します。

refビュー: ブランチとタグ

bash
tig refs

treeビュー: ファイルツリー

bash
tig tree

よく使うキーバインド

ナビゲーション

plain
j, ↓           : 次の行へ
k, ↑           : 前の行へ
J              : 次にジャンプ(コンテキスト依存)
K              : 前にジャンプ(コンテキスト依存)
PgDn, Space    : 1ページ下へ
PgUp, b        : 1ページ上へ
Home           : 先頭へ
End            : 末尾へ

ビュー操作

plain
Enter          : 選択した項目の詳細を表示
q              : 現在のビューを閉じる
Q              : tigを終了
R              : 画面を更新
Tab            : 次のビューに切り替え
m              : メインビューに切り替え
d              : diffビューに切り替え
l              : logビューに切り替え
t              : treeビューに切り替え
r              : refビューに切り替え
s              : statusビューに切り替え
h              : ヘルプを表示

検索

plain
/              : 前方検索
?              : 後方検索
n              : 次の検索結果
N              : 前の検索結果

Git操作

plain
C              : git cherry-pick
!              : git revert(statusビューではファイルの破棄)
u              : ステージング/アンステージング切り替え
1              : ハンク単位でステージング
@              : git checkout(ブランチ切り替え)

実践的な使い方

コミット履歴を確認

bash
# tigを起動
tig

# コミット間を移動(j/k)
# 気になるコミットでEnter
# 変更内容を確認
# qで戻る

コミット前の確認

bash
# ステータスビューを開く
tig status

# 変更されたファイルを確認
# Enterでdiffを表示
# 問題なければターミナルに戻ってコミット

対話的にステージング

bash
# ステータスビューを開く
tig status

# ファイルを選択してu(ステージング/アンステージング)
# または1(ハンク単位でステージング)

# すべてステージングしたらC(コミット)
# コミットメッセージを入力
# 保存して終了(:wq)

特定のファイルの履歴を追跡

bash
# ファイルの履歴を表示
tig path/to/file.js

# Enterで各コミットの変更内容を確認
# Bでblamビューに切り替え

ブランチ間の差分を確認

bash
# mainとfeatureブランチの差分
tig main..feature

# コミット一覧が表示される
# Enterで各コミットの詳細を確認

特定のコミットを探す

bash
# tigを起動
tig

# /で検索モード
# キーワードを入力(例: "fix bug")
# nで次の検索結果に移動

コミットをチェリーピック

bash
# tigを起動
tig

# チェリーピックしたいコミットを選択
# Cキーを押す
# 確認後、Enterでチェリーピック実行

ビューの詳細

メインビュー(main)

bash
tig
# または
tig show

表示内容:

操作:

statusビュー(status)

bash
tig status

表示内容:

操作:

diffビュー(diff)

bash
# 現在のHEADのdiff
tig diff

# 特定のコミットのdiff
# メインビューから選択してEnter

表示内容:

操作:

blamビュー(blame)

bash
tig blame path/to/file.js

表示内容:

操作:

refビュー(refs)

bash
tig refs

表示内容:

操作:

treeビュー(tree)

bash
tig tree

表示内容:

操作:

設定ファイル

設定ファイルの場所

bash
~/.tigrc

または

bash
$XDG_CONFIG_HOME/tig/config

基本的な設定例

.tigrc bash
# カラースキーム
set main-view-date = custom
set main-view-date-format = "%Y-%m-%d %H:%M"

# 行番号を表示
set line-number-interval = 1
set blame-view = line-number:yes,interval=1 text

# タブ幅
set tab-size = 4

# 差分のコンテキスト行数
set diff-context = 3

# マウスを有効化
set mouse = true

# 水平スクロール
set horizontal-scroll = 33%

キーバインドのカスタマイズ

.tigrc bash
# カスタムキーバインド
bind generic g move-first-line
bind generic G move-last-line
bind generic <Ctrl-f> scroll-page-down
bind generic <Ctrl-b> scroll-page-up

# Gitコマンドをバインド
bind status P !git push origin
bind main C !git cherry-pick %(commit)
bind diff + !git commit --amend

カラー設定

.tigrc bash
# メインビューの色
color main-head cyan default bold
color main-remote yellow default
color main-tracked yellow default bold
color main-tag magenta default bold
color main-local-tag magenta default

# diffビューの色
color diff-header yellow default
color diff-chunk magenta default

コマンドライン引数

よく使う引数

bash
# すべてのブランチを表示
tig --all

# リモートブランチも含める
tig --remotes

# 特定の日付以降のコミット
tig --since="1 week ago"

# 特定の作者のコミット
tig --author="John Doe"

# パスを指定
tig -- path/to/directory

git logのオプションを渡す

bash
# tigはgit logのオプションをサポート
tig --grep="fix"
tig --no-merges
tig --reverse

他のツールとの組み合わせ

エイリアスに登録

.gitconfig bash
[alias]
  t = !tig
  ts = !tig status
  tb = !tig blame

使用例:

bash
git t         # tig
git ts        # tig status
git tb file   # tig blame file

fzfと組み合わせる

bash
# コミットを選択してtigで表示
git log --oneline | fzf | awk '{print $1}' | xargs tig show

シェル関数で便利に

.bashrc bash
# ファイルを選択してblamを表示
tblame() {
  local file=$(git ls-files | fzf)
  [ -n "$file" ] && tig blame "$file"
}

# ブランチを選択して表示
tbranch() {
  local branch=$(git branch -a | fzf | sed 's/^[* ]*//')
  [ -n "$branch" ] && tig "$branch"
}

tigの利点

1. 視覚的にわかりやすい

bash
# コマンドライン
git log --graph --oneline

# tig
tig  # より見やすいグラフとカラー

2. 対話的な操作

bash
# tigではキーボードで直感的に操作
- j/kで移動
- Enterで詳細
- /で検索

3. コミット前の確認が楽

bash
tig status
# 変更内容を確認してからコミット

4. ステージングが簡単

bash
tig status
# uキーでステージング/アンステージング切り替え
# 1キーでハンク単位の操作

よくある使い方

日常的な使い方

bash
# 朝、最新の状態を確認
tig

# コミット前の確認
tig status

# 変更をステージング
tig status
# uキーでステージング
# Cキーでコミット

コードレビュー

bash
# プルリクエストのコミットを確認
tig origin/main..feature-branch

# 各コミットの変更を確認
# Enterで詳細を表示

デバッグ

bash
# バグが混入したコミットを探す
tig

# /でキーワード検索
# 該当コミットを確認

履歴調査

bash
# 特定のファイルの変更履歴
tig path/to/file.js

# 各コミットでEnterを押して変更内容を確認
# Bでblamビューに切り替え

ベストプラクティス

1. 頻繁にtig statusを使う

bash
# 作業前後でステータスを確認
tig status

変更内容を視覚的に確認できます。

2. .tigrcで好みに設定

.tigrc bash
# 日付フォーマット
set main-view-date-format = "%Y-%m-%d %H:%M"

# 行番号
set line-number-interval = 1

# マウス
set mouse = true

3. キーバインドを覚える

最低限覚えるキー:

4. エイリアスを活用

bash
alias t='tig'
alias ts='tig status'
alias tl='tig log'

5. git logの代わりに使う

bash
# ❌ 見づらい
git log --graph --oneline

# ✅ tigを使う
tig

よくある質問

Q: tigとGitコマンドの違いは?

A:

tigからもGitコマンドを実行できます(Cでcherry-pickなど)。

Q: リモートブランチも表示したい

A:

bash
tig --all
# または
tig refs

Q: 大きなリポジトリで遅い

A:

bash
# 表示するコミット数を制限
tig -n 100

# または特定のパスのみ
tig -- path/to/directory

Q: マウスが使えない

A:

.tigrc bash
# .tigrcに追加
set mouse = true

Q: エディタを変更したい

A:

bash
# 環境変数で設定
export EDITOR=vim

# またはGit設定
git config --global core.editor vim

tigで効率的なワークフロー

1. 作業開始時

bash
# 最新の状態を確認
tig

# 未コミットの変更があるか確認
tig status

2. 開発中

bash
# 定期的にステータスを確認
tig status

# 変更内容を確認してからステージング
# uキーでステージング

3. コミット前

bash
# ステータスビューを開く
tig status

# 変更内容を最終確認
# Enterでdiffを表示

# 問題なければステージング(u)
# コミット(C)

4. プッシュ前

bash
# コミット履歴を確認
tig

# プッシュするコミットを確認
# 問題なければターミナルでpush

5. コードレビュー時

bash
# ブランチ間の差分を確認
tig main..feature

# 各コミットを確認
# 気になる箇所があればEnterで詳細

まとめ:覚えておくべきコマンドとキー

よく使うコマンド

bash
tig                    # コミット履歴を表示
tig status            # ステータスを表示
tig blame file.js     # ファイルのblamを表示
tig main..feature     # ブランチ間の差分
tig refs              # ブランチとタグを表示

必須のキーバインド

plain
j/k                   # 移動
Enter                 # 詳細を表示
q                     # 閉じる
Q                     # 終了
/                     # 検索
u                     # ステージング(statusビュー)
C                     # コミット(statusビュー)
h                     # ヘルプ

便利なキーバインド

plain
d                     # diffビューに切り替え
s                     # statusビューに切り替え
r                     # refsビューに切り替え
R                     # 画面を更新
Tab                   # 次のビューに切り替え
B                     # blamビューを開く

tigを使うべき場面

tigはGitの日常的な作業を快適にする強力なツールです。慣れればGUIツールよりも高速に操作できます。