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
これで、このリポジトリの履歴が見れるようになる。
使い方の説明記事
使い方を解説する日本語ページはいくつもあるようだ。
- 超絶便利なGitクライアントのtigのすすめ
- tigってなに? gitを操作するなら、tigを使おう!
- tigでgitをもっと便利に! addやcommitも
- TigがWindowsにやってきたのでチュートリアルをまとめる
- 今からでも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を取る方法がないらしい
ディスカッション
コメント一覧
まだ、コメントがありません