【Git】Tigを使ってみた

Tigのバージョン：2.2.1

# Tigについて
Tigはtext-mode interface for Gitの略で、
Gitをより[インタラクティブ](https://kotobank.jp/word/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96-901)に操作できるツールで、操作方法はvimライク。

- [ソースコード](https://github.com/jonas/tig)
- [本家サイト](http://jonas.nitro.dk/tig/)

# インストール
Homebrewを入れている方は下記のコマンドでインストール

```
$ brew install tig
```

- [その他インストール方法はこちら](https://github.com/jonas/tig/blob/master/INSTALL.adoc)
- [Homebrewのインストールはこちら](http://brew.sh/index_ja.html)

# 各ビューの紹介
tigには機能ごとに分けられたビューと呼ばれる画面があるので、
まずはじめによく使うビューとその見方をざーっと紹介していこうと思います。

**ビューの基本操作**

|     キー操作   |    説明                |
|:-----------------|------------------:|
|      q        |       一つ前の画面に戻る |
|     :q      |     ビューを閉じる      |

## mainビューとdiffビュー

```
$ tig
```
git logのように現在のブランチのコミットログ一覧が表示されている画面。
![スクリーンショット 2016-12-04 18.31.59.png](https://qiita-image-store.s3.amazonaws.com/0/151720/eb56a84e-51bf-933c-55e9-d5de30887126.png)

Enterを押すとカーソル上のコミット内容をgit diffのように表示できます。
![スクリーンショット 2016-12-04 18.27.45.png](https://qiita-image-store.s3.amazonaws.com/0/151720/a8b59944-6f25-d185-4a6a-0beb0f7de843.png)

- コミットを選択

|     キー操作   |    説明                |
|:-----------------|------------------:|
|      ↑ , Ctrl + p     |    カーソルを上に移動    |
|     ↓ , Ctrl + n      |    カーソルを下に移動       |
|     Enter      |  選択       |

- diff側の操作

|     キー操作   |    説明                |
|:-----------------|------------------:|
|     Ctrl + u        |       前のページ |
|     Ctrl + d      |    次のページ       |

## helpビュー
mainビュー上でhを入力。
ヘルプが表示されます。
![スクリーンショット 2016-12-04 19.52.19.png](https://qiita-image-store.s3.amazonaws.com/0/151720/34ed447c-a49b-168b-da2d-57b2a4397a61.png)


## statusビュー
mainビュー上でsを入力。
git status のようにファイルの状態を確認でき、ファイルを選択するとdiffが表示されます。
また、Statusビューではコミット操作を行うこともできるので後ほど紹介します。
![スクリーンショット 2016-12-04 19.27.42.png](https://qiita-image-store.s3.amazonaws.com/0/151720/1a77f3a6-167a-894e-323e-36e2d7bf05cc.png)

- ファイルを選択

|     キー操作   |    説明                |
|:-----------------|------------------:|
|      ↑ , Ctrl + p     |    カーソルを上に移動    |
|     ↓ , Ctrl + n      |    カーソルを下に移動       |
|     Enter      |  選択       |

- diff側の操作

|     キー操作   |    説明                |
|:-----------------|------------------:|
|     Ctrl + u        |       前のページ |
|     Ctrl + d      |    次のページ       |

## treeビュー
mainビュー上でtを入力。
そのコミット時点でのディレクトリ構成が表示されます。
Enterを押すとファイルの内容が表示されます。
![スクリーンショット 2016-12-04 19.40.14.png](https://qiita-image-store.s3.amazonaws.com/0/151720/944617f6-55b2-476a-7764-b52cc48778f9.png)

## refsビュー
mainビュー上でrを入力。
git branchのようにブランチ一覧が表示されます。

![スクリーンショット 2016-12-04 19.57.03.png](https://qiita-image-store.s3.amazonaws.com/0/151720/b7cce586-4781-29de-41be-f97cd224930e.png)

# statusビュー上でコミット操作を行う
statusビュー上で「git add, git reset HEAD, git checkout, git commit」を実行

statusビュー
![スクリーンショット 2016-12-04 20.09.00.png](https://qiita-image-store.s3.amazonaws.com/0/151720/e7148a67-c642-4bad-87d0-e62622d97716.png)


|     アルファベット   |    説明                |
|:-----------------|------------------:|
|     Changes to be committed:      |    インデックス   |
|    Changes not staged for commit:      |     ワークツリー      |
|     Untracked files:     |     まだGit管理下にないファイル      |

- ファイル名の横に記載されているアルファベット1文字の意味

|     アルファベット   |    説明                |
|:-----------------|------------------:|
|     D       |   削除 or git rmされた状態    |
|     M      |     修正ファイル      |
|     ?      |      新規ファイル     |

### git add
インデックスに追加したいファイル（README.rdoc）にカーソル合わせて`u`を押すとaddされる。
before
![スクリーンショット 2016-12-04 20.20.25.png](https://qiita-image-store.s3.amazonaws.com/0/151720/b8df20bf-ab89-ca04-a5eb-c7fd9f3572da.png)
after
![スクリーンショット 2016-12-04 20.22.08.png](https://qiita-image-store.s3.amazonaws.com/0/151720/dcbd6006-626e-0409-9ea9-3755c2f72f55.png)

### git reset HEAD
インデックスにあるファイル（README.rdoc）にカーソルを合わせて`u`を押すとreset HEADされる。
before
![スクリーンショット 2016-12-04 20.32.58.png](https://qiita-image-store.s3.amazonaws.com/0/151720/910bb325-f408-889f-d7a7-1a4553b741e7.png)
after
![スクリーンショット 2016-12-04 20.33.10.png](https://qiita-image-store.s3.amazonaws.com/0/151720/baf941f2-127e-ce9f-7702-e77fcfe1635e.png)

### git checkout
修正を取り消したいファイル（README.rdoc）にカーソルを合わせて`!`を押すとcheckoutされる。
before
![スクリーンショット 2016-12-04 20.40.42.png](https://qiita-image-store.s3.amazonaws.com/0/151720/9f030df7-83d6-cfb0-2810-ecb72dedef75.png)
after
![スクリーンショット 2016-12-04 20.40.59.png](https://qiita-image-store.s3.amazonaws.com/0/151720/e043d5cb-995a-dcef-1786-beefd6929e67.png)

### git commit
statusビュー上で`ctrl + c`でコミット。
上記のコマンド打つとエディタが開くので、そこでコミットコメントを書くことができます。