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
操作:
Enter: コミットの詳細(diff)を表示j/k: コミット間を移動C: コミットをチェリーピックd: diffビューに切り替え
主要なビュー
メインビュー: コミット履歴
bash
# tigを起動(デフォルトはメインビュー)
tig
# または明示的に
tig show
- コミットの一覧を表示
Enterでコミットの詳細を確認dでdiffビューに切り替え
diffビュー: 差分表示
bash
# 未コミットの変更を表示
tig status
# または、メインビューから`d`キー
- ファイルごとの変更内容を表示
+で追加行、-で削除行を表示- コミット前の確認に便利
ログビュー: シンプルな履歴
bash
tig log
git logのような表示- コミットハッシュ、作者、日付、メッセージを表示
stageビュー: 対話的なステージング
bash
tig status
操作:
u: ステージング/アンステージング切り替え1: ハンク(変更の塊)単位でステージングC: コミット(メッセージを入力)!: ファイルの変更を破棄
blamビュー: 行ごとの変更者
bash
# 特定のファイルのblameを表示
tig blame path/to/file.js
# または、メインビューから`B`キー
各行がいつ、誰によって変更されたかを表示します。
refビュー: ブランチとタグ
bash
tig refs
- すべてのブランチとタグを表示
Enterでそのブランチの履歴を表示
treeビュー: ファイルツリー
bash
tig tree
- リポジトリのファイル構造を表示
Enterでファイルの内容を表示
よく使うキーバインド
ナビゲーション
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
表示内容:
- コミットグラフ
- コミットハッシュ(短縮)
- 作者
- 日付
- コミットメッセージ
操作:
Enter: diffビューを開くd: 直接diffビューに切り替えt: treeビューを開くC: cherry-pick
statusビュー(status)
bash
tig status
表示内容:
- ステージングされたファイル
- 変更されたが未ステージングのファイル
- 未追跡ファイル
操作:
u: ステージング/アンステージング1: ハンク単位でステージング!: 変更を破棄C: コミットEnter: diffを表示
diffビュー(diff)
bash
# 現在のHEADのdiff
tig diff
# 特定のコミットのdiff
# メインビューから選択してEnter
表示内容:
- 変更されたファイル
- 追加・削除された行
- 変更前後のコンテキスト
操作:
[/]: diffのコンテキストを増減@: 親コミットに切り替え
blamビュー(blame)
bash
tig blame path/to/file.js
表示内容:
- 各行のコミットハッシュ
- 作者
- 日付
- コード
操作:
Enter: その行を変更したコミットの詳細,: 親コミットのblamを表示
refビュー(refs)
bash
tig refs
表示内容:
- ローカルブランチ
- リモートブランチ
- タグ
操作:
Enter: そのブランチの履歴を表示@: チェックアウト
treeビュー(tree)
bash
tig tree
表示内容:
- ディレクトリ構造
- ファイル一覧
操作:
Enter: ファイルの内容を表示(blob)B: blamビューを開く
設定ファイル
設定ファイルの場所
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. キーバインドを覚える
最低限覚えるキー:
j/k: 移動Enter: 詳細q: 閉じる/: 検索u: ステージング(statusビュー)
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コマンド: 実際の操作を行う
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を使うべき場面
- コミット履歴を視覚的に確認したい
- 対話的にステージングしたい
- ファイルの変更履歴を追跡したい
- コードレビューで変更内容を確認したい
- blamで各行の変更者を調べたい
tigはGitの日常的な作業を快適にする強力なツールです。慣れればGUIツールよりも高速に操作できます。