Git/Tool/tig

Git のコンソールベースのvimライクなクライアント。

Git のコマンドのやりにくいところをうまくサポートしていて知識の繋がりがスムーズ。

起動オプション

バージョン

$ tig --version

すべてのブランチを閲覧対象にする

$ tig --all

操作

基本的なカーソル操作はvimと同様

状況 機能 操作 memo
共通
main-view 起動直後。コミットログが順番に並ぶ画面。logのダイジェスト版。操作の起点
diff-view へ移動 カーソルをリビジョンに当てて d 対象はカーソルのリビジョンとその前との変化
tree-view へ移動 カーソルをリビジョンに当てて t カーソルのリビジョン時点の構造
status-view へ移動 カーソルをリビジョンに当てて S
branch-view へ移動 r
Quit q 終了
diff-view コミットによりどの部分がどう変化したのかを見る
checkout ! 対象の hunk をコミット時点へ戻す
split hunk \ 対象の hunk を分割する
tree-view 対象のリビジョンでのファイルディレクトリ構造表示
log-view いわゆるlog
blame-view
branch-view ブランチの表示。一番上が現在のブランチ
Create new branch and switch N 独自キーバインドで設定
Checkout branch C カーソル上のブランチへ移動
status-view ステージング管理。なんだかんだでメインで使う
commit C ステージング管理。なんだかんだでメイン
stage/unstage toggle カーソルをファイルに当ててu ステージング管理
checkout カーソルをファイルに当てて ! 対象のファイルを元に戻す。反対コミットではなくて単純に対象のワークのファイルをコミット時点へ戻す
back q 一つ前の画面に戻る
Go to diff-view enter 対象のファイルをdiff-view で見る
Quick Reference 簡単なヘルプ

※ver 1.0 には Stash-view が無い

自分はほとんど Status-view からの stage からの commit の操作に使っている。 簡単にファイルを選んで stage できるとわかってからは spike 系のブランチをあまり切らなくなった。 とりあえず作業用のブランチだけ作っておいて適当に開発して、区切りがついたら対象だけ stage して(この際に diff-view ですぐ確認できるから安心) commit PR という流れ。残りは stash して次の作業ブランチに持って行って同様に操作。

あとは log view で master から作業ブランチがどれぐらい乖離しているかを見るぐらい。

設定

.tigrcファイルを書くことでイロイロ設定することができる。

※設定ファイルのフォーマットがバージョンによって大きく違っていて、使えない場合もある

# 日付表示を白
color date white default
# G 操作で最終行へ移動。デフォルトでは git gc に割り当てられているので誤操作防止
bind generic G move-last-line
# リビジョン間移動
bind main C !?git checkout %(commit)
# ブランチ間移動
bind branch C !?git checkout %(branch)
# 新規ブランチからの移動
bind branch N !git checkout -b %(prompt) %(branch)

キーバインドの設定は

bind view_name key function

のように設定するようだ。

move-last-line のように tig がはじめから用意してくれている動作はそのまま書けばよい。 コマンドを打ちたい場合は ! に続いて直接コマンドを書く。

?をつけると操作時に確認ダイアログが出るようになる。

↑のような変数も使うことができる。大体がカーソルにあたっている何かの情報をとってくる。

%(prompt) 実行時に入力を受け付けてその内容を入れることができる

Diff で改行コードを無視する

set ignore-space = at-eol

このように設定すると改行コードを変更したファイルは status-view で変更があると検出されるが、変更箇所を diff で見ても無視して表示されない

トラブル

No revisions match the given arguments.

起動時に・・・というエラーが出る。tigは commit が一個もなかったら出るっぽい。

Untracked files がある日突然表示されなくなる

原因不明。事象としてはある日突然おこって、ある日突然回復したりするらしい。

自力で回復するには tigrc にこれを書き込む

set status-show-untracked-files = yes

memo

設定

MSYS2 上の ver 2.4.1

set main-view=id date:display=custom,format="%y%m%d %H%M",local=yes author:abbreviated commit-title:graph=v2,refs=yes
set line-graphics = utf-8

main-view(起動後のコミットログ画面)での表示を id 表示を付加して、時刻表示をコンパクトにしている

Tags

vcs/git/tool/tig.txt · 最終更新: 2020-03-10 10:59 by ore