Edited at

tigから直接やっていく


まとめ



  • :でプロンプトが開ける

  • プロンプトで!から始めると外部コマンドが実行できる

  • コマンド中に%(file)を書くとファイル名に展開できる

  • 上記より:!git checkout %(file)と打つことにより今見ているファイルだけHEADに戻せる


日常風景

tigでコミット眺めながら「このファイルだけいらんなー」とか思うものの、シェルに戻ったりショートカット作ったりする手間がめんどくさいことよくありませんか?

僕はあります。

標準のキーバインドはhで見れますが、cherry-pick、ブランチのチェックアウト、ファイルのstaging/unstaging、stash操作はあるものの、あらゆる操作が登録されているわけではありません。

キーバインドを定義することでgitにまつわる(git以外のコマンドも可)いろんな操作が行なえますが、設定ファイルを編集してリロード(sourceでできるけど)するのは微妙に億劫ですし、そもそも俺はドリルじゃなくて穴が欲しいんだ。

というわけでワンショットで実行したいわけです。


tigの中からコマンドを実行する。

:プロンプトが開き、!execで外部コマンドを実行できます。git操作系のデフォルトのキーバインドも同じ感じで定義されているだけなので、似たような感じでいけます。

ユーザ定義コマンドのところに利用できる変数がたくさん書いてあるので、適当に使っていけばいいでしょう。

とりあえず今カーソルがあるファイルだけをHEADに戻したいなら:!git checkout %(file)と打てばよいでしょう。

カーソルがあるファイルだけの履歴が見たければ:!git log %(file)でいけます。

:!git blame %(file)とかも面白いかも。


注意点

%(file)はリポジトリのルートディレクトリからの相対パスに展開されるので、カレントディレクトリがルートでないとコマンド実行に失敗するでしょう。

そんな時はファイル名の頭にコロンを付ける(:%(file))とリポジトリルートからの絶対パスとして扱ってくれるのでいけるやで。


感想

tigをよく使うなら覚えておくと良さそう。