【🔰初心者向け】Git入門 [show, notes, alias]

## はじめに
こんにちは！ITスクールRareTECHにてCS（Customer Support）を担当している池村です。今回の記事では、Gitの中でも少しニッチなコマンドも紹介していきます。（`show`はよく使ですが）

一応前の記事の続きですので、まだ読んでいない方はこちらからご確認ください。

https://qiita.com/ikemura-ren/items/743fa214d14cd4394187


![f9cca484-f6c9-42f1-ba56-9ec626d0bb56_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/d2bca084-748b-4b3a-843b-fb100b60b1d8.png)


## `show`コマンドについて
では`show`コマンドからいきましょう。
`show`コマンドは、特定のコミットやタグの詳細情報を表示するコマンドです。
コミットIDを使うので、`log`コマンドと併用していきましょう。

:::note info
`tag`コマンドは後ほどご紹介します。
:::


```Bash:showコマンドの使い方
# まずはログを確認（最新のコミットだけ出してます）
git log -n 1

# showで見てみる
git show コミットID（最初の5桁くらい）
```

実行結果👇
![名称未設定3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/8615ad48-b24e-4bed-8570-8744023b9e48.jpeg)

結果をみると、2行分が追加されていますね。
追加されたのは前回の記事で追加したまま残っているものです。

主な表示内容は以下になります。
- コミットのハッシュ値
- 作成者（Author）
- 作成日時（Date）
- コミットメッセージ
- 変更されたファイルとその差分（diff）

#### オプションでより便利に
```Bash:ファイル名だけ出す場合
git show --name-only コミットID
```

実行結果👇
![名称未設定4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/b88c5640-e69e-4708-a692-93bc33bf9528.jpeg)

```Bash:特定ファイルの変更内容だけ表示
git show コミットID -- ファイル名
```

実行結果👇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/2e17eca3-03d6-42a8-8180-a36fb4c00c79.png)

```Bash:変更したファイルの行番号を表示
git show --stat コミットID
```

![名称未設定5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/29aee397-fa0e-4dfb-8678-3fcabdb8c191.jpeg)

:::note info
コミットの詳細を見るときによく使うコマンドですので、ご利用ください🖐️
:::



## `notes`コマンドについて
`notes`コマンドはあまり馴染みがない人も多いかもしれません。
これはコミットメッセージでは伝えきれない注釈をコミットに追加できるコマンドです。

```Bash:notesの使い方
git notes add コミットID
```

上記を実行すると、Vimが開かれるので、詳細を記入して、保存して閉じます。
一連の手順は以下になります。
1. notesコマンドを実行
1. Vimが開かれるので、`i`キーでインサートに入る
1. 行末に書きたい詳細を書く
1. `esc`キーでエスケープする
1. `:wq`でファイルを閉じる

#### `notes`で入力した内容を確認
```Bash:notesで入力した内容の確認方法
# notesコマンドから確認
git notes show コミットID

# ログの一覧から表示
git log --notes
```

実行結果👇
![名称未設定6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/9a1f86d8-fae6-475b-a205-ad136016e474.jpeg)

#### `push`した先では`notes`の内容はどうなるのか？
こちらの疑問が出ると思いますが、`push`した先（Web上のGitHub）では`notes`の内容は何も反映されません。基本的にローカルに保存される内容となります。

:::note info
実際にプルリクエストを出す際に、詳細はDescriptionのフォームに入力します。実際にプルリクエストを送る際の**詳細下書きだと思ってメモする**のに便利とお考えください。
:::


## `alias`コマンドについて
シェルをいじっていると`alias`の設定をすることがあります。これはシェル全体で反映される内容ではありますが、Gitが管理してくれる`alias`も存在しています。

早速使ってみましょう。

```Bash:aliasの設定方法（基本コマンド）
git config --global alias.別名 '元のコマンド'
```

例えば
`git status`を`git st`にしたい場合を想定します。

```Bash:aliasの設定方法
git config --global alias.st 'status'
```

これを登録することで、以下の画像のように短縮してコマンドを打つことが可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/ac4f8186-1410-4591-8dc3-63166c89749d.png)


現在設定している`alias`の確認方法
```Bash:alias確認
git config --get-regexp alias
```

#### 私自身の設定はどうかというと
私の設定は以下のようになっております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/b7bcacf7-9ae1-4c3e-9a68-29a2fdb7a674.png)

:::note info
短いコマンドはまあ気分で設定していますが、`log`のように色々なオプションを使う場合は`alias`の設定をおすすめします。
:::

#### シェルの`alias`との関係性について
シェル自体に`alias`を設定することができるのですが、どちらが優先されるかを解説します。答えを言ってしまうと、**シェルの`alias`が優先されます**。

ただ、シェルの`alias`はかなり多くなりがちで、管理を別にできるならその方がいいと考えています。

:::note info
私自身の考えなので、ここはどちらでも良いです。
:::


## おわりに
Gitのニッチなコマンドはもっとありますが、今回はこれだけにします。
初心者向きではないコマンドも多いですからね。

次回はブランチ戦略の記事を書こうと思います。←これは正解がない気がしている。

次の記事はこちら👇

https://qiita.com/ikemura-ren/items/e2cca3b5bac169305615