「gitはコマンドラインで！」な人にlazygitのススメ


## はじめに
皆さんは普段、ローカルマシンでのGit操作はどのように行っていますか？

自分は普段、CLI上でgitコマンドを打ってgit操作をしているのですが、ある日会社の先輩に
**「SourcetreeとかGUIのgitクライアントアプリ使った方が見やすいし便利じゃない？w」**
的なことを言われて、
「く、黒い画面がいいから…。マウスとか使うの面倒だから…。」
としか言えず悔しい思いをしました。。

しかし**[lazygit](https://github.com/jesseduffield/lazygit)**という素晴らしいツールを使えば、CLIでもgit操作はこんなに便利でイケてるということを広められることができれば思い今回記事にしました。

githubリポジトリ: https://github.com/jesseduffield/lazygit

## インストール
ここに全て記載されているので簡単に。
https://github.com/jesseduffield/lazygit#installation

### Homebrew
```brew install jesseduffield/lazygit/lazygit```

### Windows
https://github.com/jesseduffield/lazygit/releases
ここにバイナリがあるので、適宜必要なファイルをダウンロード。

### その他
UbutuやArch Linux、Conda用のインストール方法も上記リンクに記載されているので、記載内容に従えばインストールできるはずです。

lazygit自体はGoで作られているので、Goの環境がローカルにあれば
```go get github.com/jesseduffield/lazygit```
でもインストール可能です。

## 使い方
インストールが完了したら、あとはgit管理されているリポジトリがあるディレクトリで

```terminal
$ lazygit
```
と入力するだけです。

するとこんな画面が表示されます。
![スクリーンショット 2019-12-07 18.32.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/d7ed3eb5-f8eb-2e52-a853-0805116e9c1e.png)

git initしたばかりの空のリポジトリなので味気ないですが、なんだかちょっとワクワクします

### 基本操作
lazygitを立ち上げると画面左側に以下の5つのグループが表示されています。
1. **Status**
2. **Files**
3. **Local Branches - Remotes - Tags**
4. **Commits**
5. **Stash**

それぞれのグループは

-  「←」「→」カーソル
- 1,2,3,4,5の数字
- 「h」「l」

で移動できます。個人的にはvimのキーバインドで移動できるのがとても嬉しいです！

それぞれのグループで使用できるコマンドは
そのグループに移動して 「**x**（小文字）」 を押すと表示されます。

それでは、よくありそうなgitの操作を試してみます。

#### ブランチ操作
ブランチの操作は **Local Branches - Remotes - Tags** グループ内で行います。

##### ローカルブランチ作成
1. **Local Branches - Remotes - Tags**に移動し 「**n**」 ボタン押下
2. ダイアログが表示されるので、ブランチ名を入力してEnter
![スクリーンショット 2019-12-07 19.01.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/e83ea735-bcbb-a13b-f55d-13050ef44c31.png)
3. **Local Branches - Remotes - Tags**に作成したブランチが表示されたら作成成功
![スクリーンショット 2019-12-07 19.08.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/af6c65d0-fa9b-e570-d7bb-6b1b027e9e4d.png)


#### ローカルブランチ切替
1. 切替先のブランチにカーソルを合わせ 「**space**」 キー押下
2. 指定のブランチに「**＊**」が付与されていれば切替成功
![スクリーンショット 2019-12-07 19.27.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/3a614879-f726-6f74-15a4-a72bf24adfe4.png)

##### ローカルブランチ削除
1. 削除したいブランチにカーソルを合わせ、 「**d**」 ボタン押下
![スクリーンショット 2019-12-07 19.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/b56f6dd4-c4f3-8703-7686-409abc248a1d.png)


2. 確認ダイアログが表示されるので、削除して問題なければEnter（削除しない場合はescape）
![スクリーンショット 2019-12-07 19.19.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/e6b4207c-30be-66ac-9af4-687ba84631fe.png)
3. **Local Branches - Remotes - Tags**から削除したブランチが消えていれば削除成功
![スクリーンショット 2019-12-07 19.19.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/c4793a03-29cf-c6e0-f06a-a63f50186ccb.png)

#### ファイル操作
ファイルの操作は **Files** グループで行います。

##### ステージ追加（git add）
1. ステージに追加したいファイルにカーソルを合わせて「**space**」キー押下
2. 表示が変わればステージ追加成功
![スクリーンショット 2019-12-07 19.44.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/49082606-3aae-f01e-4baf-df3c7f0422e8.png)

##### ステージ追加を取り消す（git reset）
1. 取り消したいファイルにカーソルを合わせて「**space**」キー押下
2. 表示が変われば取り消し成功
![スクリーンショット 2019-12-07 19.44.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/fed8ad84-3703-4c78-aa30-a560dc992243.png)

##### コミット
1. コミット対象のファイルをステージに追加した状態で、 「**c**（小文字）」 押下
2. ダイアログが表示されるので、コミットメッセージを入力して Enter
![スクリーンショット 2019-12-07 19.58.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/5034fa0d-044f-c306-8d68-91b8a29fce36.png)
3. **Commits**グループにコミットログが追加されればコミット成功
![スクリーンショット 2019-12-07 19.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/fc84e4dc-557b-c2fc-695e-b104b1c60771.png)

#### リモートブランチと連携
リモートブランチの連携はどこにカーソルの位置に関わらず、どこでも行えます。

##### プッシュ
1. 「**P**（大文字）」押下
2. プッシュ中であるダイアログが表示されるので、表示が閉じられればプッシュ完了
![スクリーンショット 2019-12-07 20.04.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/90cae5b5-895a-e6dc-15e4-c8c03f3b4ac3.png)

##### プル
1. 「**p**（小文字）」押下
2. プル中であるダイアログが表示されるので、表示が閉じられればプル完了
![スクリーンショット 2019-12-07 20.10.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165247/07b29124-a1a7-6ed4-1cce-f927d172be09.png)

## まとめ
さわりの部分しか紹介できていませんが、これ以外のgit操作も基本的に全て行えます。

キーバインドに慣れるまでが大変かもしれませんが、普段使うキーはすぐに慣れると思うので、そうなれば手足のように使い倒せるのではないかと思います！