これはTig、gitのためのncursesbベースのテキストモード インタフェース、のマニュアルです。TigはGitリポジトリ内の変更にざっと目を通し、更に様々なGitコマンドの出力のページャーとして振る舞うことができます。ページャーとして使われた場合、stdinからの入力を表示し、それをカラー化するでしょう。
リポジトリにざっと目を通す場合に、Tigはコミットログの要約およびログメッセージ、diffstat、diff のような様々なviewをユーザに提示するために基礎となっているGitコマンドを使用します。
目次
1. 呼び方の慣習
1.1. ページモード
stdionがパイプの場合、全てのログあるいはdiffオプションは無視され、ページャービューはstdinからロードされたデータを開くでしょう。ページャーモードは様々なGitコマンドからの出力をカラー化するために使うことができます。
以下は、git-show(1)の出力をカラー化する方法の例です:
$ git show | tig
1.2. Git コマンド オプション
コマンドラインで指定された全てのGitコマンドオプションは指定されたコマンドに渡され、シェルに渡される前に全てシェルクォートされるでしょう。
注意
|
メインビューのためのオプションを指定した場合は、このオプションは自動的にメインビューに期待される形式に設定されるため、--pretty オプションを使うべきではありません。 |
コミットを表示し、作成者とコミッター情報の両方を表示する方法の例:
$ tig show --pretty=fuller
Gitコマンドによってサポートされるリビジョンオプションの説明については、リビジョンの指定の章を見てください。特定のGitコマンドオプションについての詳細は、該当のコマンドのmanページを参照してください。
2. ビュワー
表示は、画面の最終行のステータスウィンドウと、1つ以上のビューから構成されます。デフォルトでは、一度に1つのビューのみを表示しますが、メインビューとログビューの両方を分割してコミットの差分を表示することもできます。
現在の行が以下のようなログビューの中でEnterを押すと:
commit 4d55caff4cc89335192f3e566004b4ceef572521
ビューが分割され、ログビューが上のウィンドウにdiffビューが下のウィンドウに表示されるでしょう。Tabを押すことで2つのビューを切り替えることができます。ログビューを再び最小化するには、単にlを押します。
2.1. ビュー
リポジトリの様々なビューがあります。各ビューは、外部コマンド、ほとんどは git log, git diff あるいはgit show からの出力に基づいています。
- メインビュー
-
デフォルトのビューで、選択されたリビションのリスト内の各コミットの概要の1行を表示します。概要には作成日、作成者、ログメッセージの1行目が含まれます。更に、タグのようなリポジトリのリファレンスが表示されるでしょう。
- ログビュー
-
ログメッセージとdiffstat全体を表示するリビジョンログのよりリッチなビューを表示します。
- diffビュー
-
現在の作業ツリーの差分、つまり、最後のコミット以降に変更されたもの、またはログメッセージ、diffstat、diff を備えたコミットの差分を表示します。
- ツリービュー
-
現在のリビジョンに関連付けられているディレクトリツリーを一覧表示し、サブディレクトリを降順または昇順にして、ファイルの blob を表示できるようにします。
- blobビュー
-
ファイルの内容あるいはファイル名に関係するデータの"blob"を表示します。
- blameビュー
-
コミットによって注釈が付けられたか非難されたファイルの内容を表示します。
- refビュー
-
リポジトリ内のブランチ、リモートおよびタグを表示します。
- 状態ビュー
-
ワーキングツリー内のファイルの状態を表示し、追跡されていないファイルの追加と同様に変更をステージ/アンステージされるようにします。
- ステージビュー
-
トラックされているステージあるいはアンステージの変更のdiff、あるいはトラックされていないファイルの内容を表示します。
- stashビュー
-
リポジトリ内のstashのリストを表示します。
- grepビュー
-
ファイルのリストと検索パターンに一致する全ての行を表示します。
- ページャービュー
-
stdionからの入力と、内部プロンプト内に入力されたGitコマンドからの出力の両方を表示するために使われます。
- ヘルプビュー
-
キーバインディングのクイックリファレンスを表示します
2.2. 走査状態とユーザ定義コマンド
ビュワーは、どれがヘッドかと現在見ているビューのコミットIDを追跡します。コミット ID は、カーソル行を辿り、別のコミットを強調表示するたびに変化します。コミットIDが変更された場合は、diffビューを再び開く時はいつもリロードされます。head ID は、メインおよびログビューを開くときに使われ、履歴を表示するリビジョンを示します。
Tigによって利用あるいは提供されるいくつかのコマンドは設定することができます。これは、一部の環境変数と外部コマンドに当てはまります。これらのユーザ定義されたコマンドは、以下の変数の1つを使って現在のブラウジング状態を参照する引数を使うことができます。
|
現在見られている head ID。デフォルトはHEAD |
|
現在選択されているコミットID。 |
|
現在選択されているblob ID。 |
|
現在選択されているブランチ名。 |
|
現在選択されているstash名。 |
|
ツリービュー内の現在のディレクトリパス; ルートディレクトリの場合は空。 |
|
現在選択されているファイル。 |
|
現在選択されている行数。デフォルトは0。 |
|
非難されているリファレンス、あるいは未定義の場合はHEAD。 |
|
コマンドライン上で渡されたリビジョン引数。 |
|
コマンドライン上で渡されたファイル引数。 |
|
コマンドライン上で渡された他の全ての引数。 |
|
diff-options または TIG_DIFF_OPTS のオプションは、diff ビューで使われます。 |
|
blameビューで使われるblame-optionsからのオプション。 |
|
ログビューで使われるlog-options からのオプション。 |
|
メインビューで使われるmain-optionsからのオプション。 |
|
引数の値のためのプロンプト。 |
ユーザ定義コマンドの例:
-
最後のコミットを修正することができます:
bind generic + !git commit --amend
-
クリップボードにコミットIDをコピー:
bind generic 9 !@sh -c "echo -n %(commit) | xclip -selection c"
-
レビュー中に使われる現在のコミットのためのノートの追加/編集:
bind generic T !git notes edit %(commit)
-
ファイルコンテンツのきめ細かいステージングのための git のインタラクティブな追加を入力します。
bind generic I !git add -i %(file)
-
選択されたブランチの一番上で現在のブランチをRebase:
bind refs 3 !git rebase -i %(branch)
2.3. タイトル ウィンドウ
各ビューは、ビューの名前、利用可能であれば現在のコミットID、そしてどこにビューが配置されているかを示すタイトルウィンドウを持ちます:
[main] c622eefaa485995320bc743431bae0d497b1d875 - commit 1 of 61 (1%)
デフォルトでは、現在のビューのタイトルはボールドフォントを使ってハイライトされます。長くロードしているビュー(3秒以上掛かっている)については、ローディングが開始されてからの時間が追加されるでしょう:
[main] 77d9e40fbcea3238015aea403e06f61542df9a31 - commit 1 of 779 (0%) 5s
3. 環境変数
Git とのインタフェースに関連する幾つかのオプションは、環境変数を介して設定できます。
3.1. 設定ファイル
開始時に、Tigはまずシステム全体の設定ファイルを読みます(デフォルトでは{sysconfdir}/tigrc
)そして、ユーザ設定ファイル (~/.tigrc
by default)を読み進めます。それらのどちらかのファイルのパスは以下の環境変数を使って上書きすることができます:
- TIGRC_USER
-
ユーザ設定ファイルのパス
- TIGRC_SYSTEM
-
システム全体の設定ファイル。
3.2. リポジトリ リファレンス
tagおよびブランチヘッドによって参照されるコミットは[ and ]によって囲まれている参照名によってマークされるでしょう:
2006-03-26 19:42 Petr Baudis | [cogito-0.17.1] Cogito 0.17.1
どのブランチが表示されるかを制限したい場合は、master
という名前のブランチか、feature/
プリフィックスで始まるブランチのみを表示するように伝えます。それは以下の変数を設定することで行うことができます:
$ TIG_LS_REMOTE="git ls-remote . master feature/*" tig
あるいは、環境変数の中に恒久的に設定します。
- TIG_LS_REMOTE
-
全てのリポジトリリファレンスを扱うためのコマンドを設定します。コマンドはgit-ls-remote(1)と同じ形式のデータを出力しなければなりません。デフォルトは:
git ls-remote .
3.3. Diff オプション
diffがどのように表示されるかをdiffビューを使って変更することができます。例えば、コミットおよび作成日付を相対的な日付として持ちたい場合は、以下を使います:
$ TIG_DIFF_OPTS="--relative-date" tig
あるいは、環境変数の中に恒久的に設定します。
4. デフォルトのキーバインド
以下はデフォルトのキーバインドを示します。
4.1. ビューの切り替え
キー | アクション |
---|---|
m |
メインビューへの切り替え。 |
d |
diffビューへの切り替え。 |
l |
ログビューへの切り替え。 |
p |
ページャービューへの切り替え。 |
t |
(ディレクトリ)ツリービューへの切り替え。 |
f |
(ファイル)blobビューへの切り替え。 |
g |
grepビューへの切り替え。 |
b |
blameビューへの切り替え。 |
r |
refsビューへの切り替え。 |
y |
stashビューへの切り替え。 |
h |
ヘルプビューへの切り替え |
s |
状態ビューへの切り替え |
c |
ステージビューへの切り替え |
4.2. ビューの操作
キー | アクション |
---|---|
q |
ビューを閉じます。もし複数のビューが開かれている場合は、ビュースタックの中の以前のビューへ戻ります。最後に開かれているビューであれば、終了します。全てのビューを同時に終了するにはQを使います。 |
Enter |
このキーは現在どのビューにいるかに依存する"コンテキストに敏感"です。ログビューのコミット行あるいはメインビューにいる場合は、ビューを分割しコミットdiffを表示します。 diffビューでエンターを押すと、単純にビューを1行下にスクロールします。 |
Tab |
次のビューに切り替え。 |
R |
現在のビューを再読込みしリフレッシュします。 |
O |
現在のビューをディスプレイ全体に最大化します。 |
Up |
このキーは"コンテキストに敏感”で、カーソルを1行上に移動するでしょう。 しかし、もしメインビュー(分割あるいはスクリーン全体)Hからdiffビューを開いている場合は、メインビュー内の以前のコミットを示すようにカーソルを変更し、それを表示するためにdiffビューを更新します。 |
Down |
Upに似ていますが、下に移動します。 |
, |
親に移動します。ツリービューでは、これは親ディレクトリに切り替わることを意味します。blameビューでは、親のコミットのためにblameをロードするでしょう。マージのために親が問い合わされます。 |
4.3. ビュー固有のアクション
キー | アクション |
---|---|
u |
ファイルの状態を更新します。状態ビューでは、これにより次のコミットのために追跡されてないファイルあるいはステージの変更を追加することができます(git-add <ファイル名>に似ています)。ステージビュー内で diff chunk 行ステージでこれを押すと、次のコミットのためにそのチャンクのみがステージされ、diff チャンク行上ではない場合、表示された diff 内の全ての変更がステージングされます。 |
M |
git-mergetool(1)を起動することで、マージされていないファイルを解決します。これを正しく動作するためには、好みのマージツールの初期設定が必要かも知れないことに注意してください。git-mergetool(1)のmanpageを見てください。 |
! |
ステージされていない変更を持つファイルをチェックアウトします。これは最後のコミットでの内容を持つようにファイルをリセットするでしょう。 |
1 |
1行のdiffをステージします。 |
@ |
ステージビューの次のチャンクに移動します。 |
] |
diffの内容を増やします。 |
[ |
diffの内容を減らします。 |
4.4. カーソル操作
キー | アクション |
---|---|
k |
カーソルを一行上に移動します。 |
j |
カーソルを一行下に移動します。 |
PgUp,-,a |
カーソルを1ページ上に移動します。 |
PgDown, Space |
カーソルを1ページ下に移動します。 |
End |
最後の行にジャンプします。 |
ホーム |
最初の行にジャンプします。 |
4.5. スクロール
キー | アクション |
---|---|
Insert |
ビューを1行上にスクロールします。 |
Delete |
ビューを1行下にスクロールします。 |
ScrBack |
ビューを1ページ上にスクロールします。 |
ScrFwd |
ビューを1ページ下にスクロールします。 |
Left |
ビューを1カラム左にスクロールします。 |
Right |
ビューを1カラム右にスクロールします。 |
| |
ビューを最初のカラムにスクロールします。 |
4.6. 検索
キー | アクション |
---|---|
/ |
ビューを検索します。使用する検索正規表現を入力するためのプロンプトを開きます。 |
? |
ビュー内で逆方向に検索します。正規表現のためにプロンプトもします。 |
n |
現在の検索正規表現の次の一致を探します。 |
N |
現在の検索正規表現の前の一致を探します。 |
4.7. その他
キー | アクション |
---|---|
Q |
終了します。 |
<C-L> |
スクリーンを再描画します。 |
z |
全てのバックグラウンドの読み込みを停止します。これは長い履歴を持つリポジトリ内でリビジョンログを制限せずにTigを使う場合に便利かも知れません。 |
v |
バージョンを表示します。 |
o |
オプションメニューを開きます。 |
# |
行番号のon/offをトグルします。 |
D |
日付表示の on/off/short/relative/local をトグルします。 |
A |
作者表示の on/off/abbreviated/email/email user name をトグルします。 |
G |
リビジョングラフの表示の on/off をトグルします。 |
~ |
(行)グラフィックモードをトグルします。 |
F |
リファレンス表示の on/off (タグとブランチ名)をトグルします。 |
W |
diffのための空白無視の on/off をトグルします。 |
X |
コミットID表示の on/off をトグルします。 |
% |
現在選択されているファイルに関する差分だけではなく、完全な差分を表示するには、ファイルフィルタリングを切り替えます。 |
$ |
コミットタイトルのオーバーフローのハイライトをトグルします。 |
: |
プロンプトを開く。これによりどのコマンドを実行するかを指定することができます。 |
e |
エディタ内でファイルを開きます。 |
4.8. プロンプト
キー | アクション |
---|---|
:<number> |
特定の行番号にジャンプします。例えば |
:<sha> |
特定のコミットにジャンプします。例えば |
:<x> |
対応するキーバインディングを実行します。例えば |
:!<command> |
ページャー内でシステムコマンドを実行します。例えば |
:<action> |
Tigコマンドを実行します。例えば |
:save-display <file> |
現在の表示を |
:save-options <file> |
現在のオプションを |
:script <file> |
|
:exec <flags><args…> |
|
4.9. 外部コマンド
もっとカスタムが必要であれば、外部コマンドがスクリプトあるいはプログラムを簡単に実行する方法を提供します。それらは現在のコミットIDのような現在のブラウジング状態からのキーおよびユーザ情報にバインドされます。Tig には以下の組み込みの外部コマンドが付いています。
Keymap | キー | アクション |
---|---|---|
main |
C |
git cherry-pick %(commit) |
状態 |
C |
git commit |
generic |
G |
git gc |
5. リビジョン仕様
このセクションはどのリビジョンを表示するか、あるいはそうでなければどのリビジョンのビューを制限するかを指定する様々な方法を説明します。Tig 自体は、説明されているリビジョンオプションを解析しません。詳細については、関連する Git のマニュアルを参照してください。git-log(1) 以外の関連する man ページは、git-diff(1) と git-rev-list(1) です。
この章で説明されるオプションを使うことで、Gitとのやり取りを調整することができます。 例えば、この章の diff optionsで説明される環境変数で設定します。
5.1. パス名による制限
特定のファイル(または複数のファイル)に変更を加えたリビジョンのみに関心がある場合は、以下のようにファイルを一覧表示します:
$ tig Makefile README
タグ名のようなTigのサブコマンドあるいはリポジトリリファレンスを使って曖昧さを避けるために、"--
"を使って他のGitオプションからファイル名を切り離すようにしてください。つまり、statusという名前のファイルを持つ場合、それはstatus サブコマンドと衝突するでしょう。したがって、以下を使う必要があるでしょう:
$ tig -- status
5.2. 日付あるいは数値による制限
Gitとのやり取りをスピードアップするために、ログおよびメインビューの両方を表示するコミットの量を制限することができます。例えば、--since=1.month
を使って日付で制限、あるいは-n400
を使ってコミット数で制限のどちらかです。
2つの日付の間で起きた変更だけに興味があれば、以下を使うことができます:
$ tig --after="May 5th" --before="2006-05-16 15:44"
注意
|
空白を含む日付をクォートしなければならないことを避けたい場合は、代わりに"."を使うことができます。例えば、--after=May.5th 。 |
5.3. コミット範囲による制限
別のやり方として、コミットは、"tag-1.0 とtag-2.0の間の全てのコミット"のように特定の範囲に制限することができます。例えば:
$ tig tag-1.0..tag-2.0
このコミットの制限をする方法はリモートブランチへプッシュされていないコミットをブラウズするだけではつまらないものです。originをupstreamのリモートブランチと仮定して、以下を使います:
$ tig origin..HEAD
リモートブランチにプッシュされるだろうものをリスト化するでしょう。最後のHEAD は暗黙的なため、任意に省略することができます。
5.4. 到達可能性による制限
Gitは範囲指定子"tag-1.0..tag-2.0"を"tag-1.0からではなくtag-2.0から届く全てのコミット"と解釈します。到達可能性とは、問題のブランチまたはタグ付けされたリビジョンの祖先(あるいは履歴の一部)であるコミットを指します。
この方法でどのコミットをプレビューするかを指定するのが好みであれば、以下を使ってください:
$ tig tag-2.0 ^tag-1.0
^ を否定演算子として捉えることができます。この代替構文を使うと、複数のブランチカットオフを指定すると、コミットをさらに切り詰めることができます。
5.5. リビション仕様の結合
リビジョンオプションはある程度組み合わせることができます。これにより "Documentation/ ディレクトリの下のファイルを更新した、先月の中から最大20のコミットを表示する。" ということができます。
$ tig --since=1.month -n20 -- Documentation/
5.6. 全てのリポジトリリファレンスの検証
幾つかの場合において、リポジトリ内の全てのリファレンスに渡る変更をクエリすることは便利です。例として"このリポジトリ内の開発のいずれかの行が過去1週間以内に特定のファイルを変更したか"を尋ねます。以下を使ってこれを行うことができます:
$ tig --all --since=1.week -- Makefile
6. 更なる情報
新しいリリースについての情報およびバグと機能の要求を報告する方法については、Tigの ホームページ あるいは メインの Git リポジトリ を尋ねてください。
7. コピーライト
Copyright (c) 2006-2014 Jonas Fonseca <jonas.fonseca@gmail.com>
このプログラムはフリーソフトウェアです; Free Sowftware Foundationによって公開されたGNU General Public Licenseの元に、それの再配布 および/あるいは 修正をすることができます; Licenseバージョン2 あるいは(選択肢として)どの後のバージョンのどちらかです。