Linuxでgitを使う〜tig

かなり以前のWindows上でのプログラム開発はすべてEclipse上で行っていたので、そこではデフォルトのEGitを使っていた。その後に、VS-Code + TortoiseGitを主に使うようになった。しかし、完全にLinuxに環境を変更してしまった現在、TortoiseGitは使えない。そこで様々なGitクライアントを探してみたが、どうもよろしくない。もちろん、かなりの人気があるのは、GitKrakenという商用ソフトのようだが、たまにしか使わないのに高すぎると思う。そりゃ毎日プログラミングをするならライセンスも買うが、本当にごくたまにしか使わないのだ。

そんな中で、たまたま目についたのが、tigというCUIのGitクライアントである。これについて見てみる。

日本語文字化けの対応

その前に、もともとのgitシステムの日本語文字化けを何とかしないといけない。どのGitクライアントも、ファイルの中身は良いものの、日本語のファイル名が正しく表示されないのである。これは、git log、git diff、git showでの日本語の文字化けをまとめて対策というページにあった。

~/.gitconfigに、少なくとも以下を追加する。

[core]
    quotepath = false

Credentialの保存

~/.gitconfigには、以下のようにクレデンシャルを保持する機能があるのだが、しかし、ここにパスワードは書き込めないようだ。

[credential "https://gitlab.com"]
        username = foobar

7.14 Git のさまざまなツール – 認証情報の保存という説明があり、一度パスワードを投入したら覚えていてくれるようだ。しかし、ここの記述は間違っている。実際には以下のように書く。

git config --global credential.helper 'store --file ~/.git-credentials'

こうしておいて、一度パスワードを入力すると、それを~/.git-credentialsに書き込み、再利用してくれるのだが、しかし、平文で書かれるようだ。

tigのインストール

何かしらtigのオフィシャルサイトは現在(2023/6/1)見れなくなっているのだが、インストールは簡単にできる。

sudo apt update
sudo apt install tig

起動方法

いきなりtigコマンドを入れても全く動作しない。

~$ tig
tig: Not a git repository

gitのリポジトリ上でtigコマンドを叩かないと機能しないのである。

cd somerepo
tig

これで、このリポジトリの履歴が見れるようになる。

使い方の説明記事

使い方を解説する日本語ページはいくつもあるようだ。

簡単な使い方

履歴の閲覧

  • 起動すると、コミット履歴が表示されるので、↑↓で移動する。
  • 内容を見たい場合には、いずれかでENTERを押して詳細を閲覧。
  • この詳細は、j及びkキーで上下スクロールする。左右がはみ出している場合には、←→キーで左右スクロール。
  • この状態で↑↓を使うと、別の履歴が選択され、その詳細が表示される。
  • 詳細を閉じる場合はqキー。さらにqを押すと、tig自体が終了する。

変更とコミット

  • 何らかのファイルを変更すると、トップに「Unstaged changes」と表示される。どこでも良いのでs(Stats)キーを押す
  • 以下のような画面になるので、今回コミットするファイルはuキーでコミットへ。やっぱりやめる場合もUキー。

  • ファイル上でENTERを押すと、diff画面になり、変更点を確認できる。この画面もqキーで消去、←→で横スクロール。
  • コミットするには大文字のCキー。そこで変更点を書き込み、後は、メニューに示されているようにCtrl+Oでコミットする。
  • Ctrl+Xで抜ける。

プッシュ

tig自体ではプッシュできないようだ。いったんQでtigを抜けて、gitでプッシュする。

git push

diffの文字列が折り返されず、見づらい

tig のdiff で長い行が見切れて見えない時に解決策がある。~/.tigrcに以下を記述。

set wrap-lines = yes

その他の細かな設定が、Tig で Git を自由自在に操作するための .tigrc 設定例にある。

tigへの不満

  • 複数コミットにわたるdiffを取る方法がないらしい