カルキチブログ

CLI上で動作するGitクライアントTigの基本的な使い方について

今日は普段僕がGit操作をする時によく使っているTigについての記事を書いてみました。

Tigとは?

Tigとは、CUI上で動作するGit操作を効率化できるツールです。

pushやpull、mergeなどはできませんが、Gitの基本的な操作はTigを使えば簡単にできるようになるので、ターミナルでGit操作を行うことが多い人は導入すると作業が捗ります。

【Gitのリポジトリ】

https://github.com/jonas/tig

インストールの方法ですが、Macを使っている人ならbrewを使ってすぐにインストールできます。

brew install tig

Tigの基本的な使い方

ヘルプ(Tigを起動した状態でhを押すと開く)を確認すると分かるかと思うのですが、Tigはできることが多いです。

ステージング追加やコミットなどGitの基本的な操作以外にも、ブランチやタグの一覧表示やブランチの切り替え、git stashやBlame(ソースコード上の特定の場所を誰が変更したかわかる)なんかもできちゃったりしますが、今回は普段特によく使うなっていうコマンドを厳選してまとめてみました。

ここで紹介した操作方法だけ覚えれば最低限は使えるようになると思います。

Tigを起動する

インストールしたら、ターミナルを開いてtigと入力すると以下のような画面が表示されるかと思います。

tig --allと入力すると、リモートを含めた全てのブランチを含めて表示できるようにすることもできます。

リモートをあえて表示しない意味があまりないので、僕は基本的にはtig --allでTigを起動しています。

ただ、起動するたびにtig --allと打つのは面倒なので、.bashrctigaというエイリアスを設定して、tigaでtig --allが起動するように設定しています。

かなり本筋から脱線しますが、僕の.bashrcです。

#####################
#      Aliases                      #
#####################

alias ..='cd ..'

# lsした時の色変更
alias ls='ls -G'

# Docker
alias dud='docker-compose up -d'
alias dbuild='docker-compose build'
alias dstart='docker-compose start'
alias drestart='docker-compose restart'
alias dstop='docker-compose stop'
alias ddown='docker-compose down'
alias dps='docker ps'
alias dpsa='docker ps -a'
alias dimages='docker images'
alias dexec='docker exec -it'
alias dvolumels='docker volume ls'
alias dlogs='docker logs'
alias dlogsf='docker logs -f'

# tig
alias tiga='tig --all'

# 安全策
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# vim
alias v='vi'

# tmux
alias tmuxRestart='tmux attach'

# Gitのターミナルでの補完を有効にする
source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/git-completion.bash

Tig以外にもターミナルでよく行う操作は、.bashrcなどにエイリアスの設定を書いておくと作業が捗るので、おすすめです。

メインの操作画面の表示・操作

メインビューとは、Tigを起動した時一番最初に表示される画面のことを指します。

基本的な操作は以下のような感じです。

  • k・・・上に移動
  • j・・・下に移動
  • 左右の方向キー・・・ファイルの行が長くて見切れている場合、見切れている箇所に移動する
  • enter・・・コミットの詳細を確認する
  • m(他の画面にいる時)・・・メインの操作画面に戻る

kjで上下移動できるのはVimと一緒です。

cherry-pickとかもできたりしますが、説明がややこしくなるので、省略します。

僕はcherry-pickが必要な時は普通にターミナルでやっています。

ステージングの追加・削除

sを押すと、ステージングの状態を確認することができます。

Changes not staged for commitは、変更されたけどステージにはないよっていうファイルを指します。

この状態で該当ファイルにカーソルを合わせて、uを押すとステージ(インデックス)にファイルを移動できます。

コマンドでいうと、git addに相当する操作をできるようなイメージかと思います。

ステージに既に追加されている状態で、もう一度uを押すとステージから外すことができます。

コミット

ステージングエリアに追加した状態で、Shift + cを押すとVimが立ち上がります。

この状態でiを押してインサートモードに入ると文字が入力できるようになるので、コミットメッセージを入力します。

文字を入力し終わったら、escを押してノーマルモードに戻って、:wqを押すとコミットされます。

もしやっぱりコミットしたくないなと思った時は、:q!を押すとステージングの追加・削除を行う画面に戻ります。

この辺りは、TigというよりVimの操作方法についての解説ですね。。。

そもそもTigを導入したきっかけ

Tigを導入した理由ですが、CLI上でGit操作を効率化させたかったからです。

僕は普段ウェブ開発もウェブ制作も全てVimでやっているのですが、作業は全てCUI上で完結させたい思いが結構強いです。

Tigを導入するまでは、ターミナル上にコマンドを全て手打ちで入力してGitの操作を行っていたので、打ち間違えなども多く、かなり効率が悪かったです。

Tigを導入してからは、基本的な操作(ステージング追加・削除、変更履歴の確認・コミットなど)やGitグラフの確認などもCLI上でできるようになり、作業効率は格段に上がったと思います。

まとめ

ではまとめです。

  • TigというCUI上でのGit操作を簡単に行えるツールがある。
  • Gitの基本的な操作の多くはTigを使うことで、操作を効率化できる
  • 使用するには、Vimの操作知識が少し必要

ターミナル上でのGit操作を効率化できるTigについての記事を書いてみました。

VSCodeなどのIDEを使えば、この辺りのGit操作は簡単にできるので、無理して導入する必要はないかもしれませんが、ターミナル上でGit操作を完結させたい人にはとてもマッチしているツールだとは思うので、ターミナル上でGit操作を完結させたいという人は是非導入してみてください!

おまけ

基本的なGit操作の多くを効率化できるTigですが、.tigrcという設定ファイルでカスタマイズを行うことも可能です。

カスタマイズを行うことで、キーバインドを変更したり、通常はできない、pushやpull、mergeなどもTig上からできるようになるらしいです。

https://www.techscore.com/blog/2014/12/07/%E5%91%A8%E3%82%8A%E3%81%A7%E3%81%AF%E3%81%82%E3%81%BE%E3%82%8A%E4%BD%BF%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%AA%E3%81%84%E3%81%91%E3%81%A9%E3%80%81tig%E3%81%A3%E3%81%A6%E4%BE%BF%E5%88%A9%E3%82%88/