- 白黒ターミナルを利用する生活が多くなってきた無機質生活に、少々彩りを加えるために奔走する記事第三弾。
- ネットや現実世界で魔改造ターミナルを見つけて行く中で、機能性や実用性ではなく、高ビジュアル性のみ気になってしまう。
- 今回は、gitをCUIで操作する際の便利ツール「tig」を導入して、gitの効率化を図ることにしよう。
概要
- Gitを、CUIでも視覚的に操作できるクライアントツール。
- add(ステージング)やcommit・log(履歴)確認等の基本操作を、ターミナル上でもGUIのような視覚性や操作性・効率性で扱える。
- そのため、サーバー上での操作も、視覚的に効率的に行うことができる。
- 公式サイト
作業環境
- Mac OS X 10.13.4Mac OS X 10.13.4
- Homebrew 2.1.3
- git version 2.17.2
- ※Windowsでの作業は、こちらを参考にする。
インストール
- 下記のコマンドをうち、tigをインストールする。
# tigのインストール
$ brew install tig
# バージョン確認
$ tig -v
基本操作
- ※今回はgitリポジトリとして、github上で動画学習リポジトリとして有名なcs-video-coursesを使う。
- いつもお世話になっております。
- ※そのため、このリポジトリを
git clone
で自分の環境にいれておく。
メイン画面起動
- tig操作では、最初にメイン画面(履歴画面)を起動して、そこで各操作をしていく。
- 下記のコマンドで、メイン画面を表示する。
- ※操作は、gitリポジトリがあるところで行う。
# 現在いるブランチでの、メイン画面起動。
$ tig
# 全てのブランチでの、メイン画面起動。
$ tig -all
移動
- 下記にしたがって、画面内を移動していく。
内容 | キー |
---|---|
下移動 | j |
上移動 | k |
ページごとの下移動 | ctrl + d |
ページごとの上移動 | ctrl + u |
下移動(2画面ある場合の左画面) | ctrl + n |
上移動(2画面ある場合の左画面) | ctrl + p |
設定画面記述
- デフォルトの操作に加えて、独自にキー操作を設定することで、より幅広い操作が可能となる。
- 下記のコマンドをうち、
~/.tigrc
ファイルを作成。
# .tig設定ファイル作成
$ touch ~/.tigrc
- 作成後、ひとまず中身を下記の最低限のものにする。
set main-view = id date author commit-title:graph=yes,refs=yes
bind refs n ?git checkout -b "%(prompt Enter new branch name: )" %(branch)
bind refs P ?git push origin %(branch)
bind refs L ?git pull origin %(branch)
bind main ! ?git reset --soft HEAD^
早見表
- 下記の表は、以下説明する操作をまとめた各一覧。
- ※以下からの操作は、上記の操作でメイン画面を起動した状態で行う。
- ※以下からの操作は、
.tigrc
で設定しないと行えない操作もあるため、設定後に行う。
|内容|キー|
|:---:|:---:|:---:|
|メイン画面|「m
」|
|状態確認画面|「s
」|
|操作一覧画面|「h
」|
|ブランチ一覧確認画面|「r
」|
|変更ファイルステージング|「s
」で状態確認画面表示後、対象ファイル上で「u
」
※ステージング解除も同様|
|1行のみステージング|「s
」で状態確認画面表示後、対象ファイルÉnter押下で中身確認して、指定行で、1
※ステージング解除は上記と同様に「u
」|
|コミット入力画面起動|「s
」で状態確認画面表示後、対象ファイル上で,「Shift + c
」でコミット入力エディタが起動して、編集して保存。|
|プッシュ|「r
」でブランチ画面表示後、対象ブランチ上で、「Shift + p
」|
|プル|「r
」でブランチ画面表示後、対象ブランチ上で、「Shift + l
」
※チェックアウト先を確認して行う。|
|ブランチ切り替え|「r
」でブランチ画面表示後、対象となる切り替えブランチにカーソル当てて、「Shift + c
」|
|外部コマンドの受付|「:!<外部コマンド>
」
例 : 「:!git checkout -b ブランチ名
」|
|ブランチ削除|「r
」でブランチ画面表示後、対象となる削除ブランチにカーソル当てて、「!
」|
|編集の廃棄|「s
」と「Enter
」で編集のdiff画面表示後、「!
」|
|ファイル一覧画面|指定のコミットにカーソルを当て、「t
」|
|各コミット履歴画面|「t
」で、ファイル一覧画面表示後、「b
」|
|画面更新|「Shift + r
」|
|ブランチ作成|「r
」でブランチ画面表示後、「n
」と入力して、ベースブランチ名にカーソルを当て、名前を入力。|
メイン画面起動
- メイン画面の切り替えは、
m
キーで行う。
状態確認画面
- 状態確認画面の切り替えは、
s
キーで行う。
操作一覧画面
- 操作一覧画面の切り替えは、
h
キーで行う。
ブランチ一覧確認画面
- ブランチ一覧確認画面の切り替えは、
r
キーで行う。
ブランチ作成
- ブランチ作成の切り替えは、
n
キーで行う。 -
r
でブランチ画面表示後、n
と入力して、ベースブランチ名にカーソルを当て、名前を入力。 - ※この機能はデフォルトでは設定されていないため、
~/.tigrc
でキーバインドとして設定されている必要がある。
変更ファイルステージング
- 変更ファイルステージングは、
u
キーで行う。 -
s
キーで状態確認画面を開き、画面上の「Changes not staged for commit:」の対象ファイル上で、u
キーをクリック。 - ※ステージング解除の場合、「Changes to be committed:」の対象ファイル上で、再び
u
をクリックすれば戻る。
1行のみステージング
- 一部の行のみステージングの切り替えは、
1
キーで行う。 -
s
キーで状態確認画面を開き、対象ファイルをÉnter押下で中身を確認して、指定行で、1
キーをクリック。 - ※ステージング解除の場合、上記と同様
コミット入力画面起動
- コミット入力画面起動の切り替えは、
shift + c
キーで行う。 -
s
で状態確認画面を開き、画面上の「Changes to be committed:」の対象ファイル上で、shift + c
キーをクリックしてコミット入力エディタが起動して、メッセージを編集して保存。
プッシュ
- プッシュの切り替えは、
shift + p
キーで行う。 -
r
でブランチ画面表示後、対象ブランチ上で、「Shift + p
」をクリック。 - ※この機能はデフォルトでは設定されていないため、
~/.tigrc
でキーバインドとして設定されている必要がある。
プル
- プルの切り替えは、
shift + l
キーで行う。 -
r
でブランチ画面表示後、対象ブランチ上で、Shift + l
- ※チェックアウト先を確認して行う。
- ※この機能はデフォルトでは設定されていないため、
~/.tigrc
でキーバインドとして設定されている必要がある。
ブランチ切り替え
- ブランチ切り替えの切り替えは、
shift + c
キーで行う。 -
r
キーでブランチ画面表示後、対象となる切り替えブランチにカーソル当てて、Shift + c
キーをクリック
外部コマンドの受付
- 外部コマンドの受付の切り替えは、
:!<外部コマンド>
キーで行う。 - 例 :
:!git pull origin master
ブランチ削除
- ブランチ削除の切り替えは、
!
キーで行う。 -
r
でブランチ画面表示後、対象となる削除ブランチにカーソル当てて、!
キーをクリック
編集の廃棄
- 編集の廃棄の切り替えは、
!
キーで行う。 -
s
キーで状態確認画面を開き、「Changes not staged for commit:」の対象ファイルをEnter
キー押下で編集のdiff画面表示後、!
キーをクリック。
ファイル一覧画面
- ファイル一覧画面の切り替えは、
t
キーで行う。 -
m
でメイン画面を開き、任意のコミット上で、t
キーをクリック。
各コミット履歴画面
- 各コミット履歴画面の切り替えは、
t
でb
キーで行う。 -
m
でメイン画面を開き、任意のコミット上でt
キーをクリックして、ファイル一覧を開き、各ファイル上で、b
キーをクリック。
画面更新
- 画面更新の切り替えは、
shift + r
キーで行う。
まとめ
- 今回は、CUIでのgit効率化ツールということで、賢人技術者同士で嗜まれている「インターフェース論争」とは全く無縁であることを生かし、雰囲気でCUIツールを密かに使いながら、記事を書く。
- このtigも随分前からあるらしいが、エンジニア歴約1年の私としては、昔からある便利ツールの掘り起こし作業は、毎回至福の極み。
- 次回も賢人技術者が昔から当然のように扱っている「便利ツール」を、真っ当な今更顔で調べて行くことにしよう。
参考
-
https://qiita.com/y-tsutsu/items/98fc75b8814c99619cf4
→こちらの記事を参考にしました。大変お世話になりました。 -
https://github.com/Developer-Y/cs-video-courses
→gitリポジトリとして、使わせていただきました。いつも大変お世話になっております。