Git関連で個人的に便利・役に立ったノウハウ

# はじめに
この記事では個人的に便利・役に立ったgit関連のノウハウをメモっております。
定期的に追加・修正を行いメンテナスしたいと思っております！

# 1. GitHubにSSHで接続する
Pullやpushなど行う際に毎回ユーザーIDとパスワードの入力を求められます。GitHubにSSHで利用する公開鍵を登録する事で入力の手間を省けます。

## 手順
### 1.1. SSHキーを作成する
`ssh-keygen` コマンドでSSHキーを作成します。
以下、オプションの詳細と補足になります。
・SSHキーのサフィックスはコマンド実行年月日となります。（2021年10月12日実行した場合、id_rsa.2021-10-12になる）
・-b バイト長
・-t 暗号化方式
・-C コメント

```:実行コマンド
$ ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.`date "+%Y-%m-%d"` -C $USER-`date "+%Y-%m-%d"`
Generating public/private rsa key pair.
Created directory '/Users/（ユーザー名）/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/（ユーザー名）/.ssh/id_rsa.2021-10-12.
Your public key has been saved in /Users/（ユーザー名）/.ssh/id_rsa.2021-10-12.pub.
The key fingerprint is:
SHA256:RtgqktRnBgenliUr52IXmBOkNaqIuJ+RB8vHb2zQjbk （ユーザー名）-2021-10-12
The key's randomart image is:
+---[RSA 4096]----+
| .= +.+          |
| + * X o         |
|o * O = o        |
|=. B = o         |
|= * +..+S        |
| + O..+..        |
|. = +o .         |
| . = .E          |
|  o  o.          |
+----[SHA256]-----+
```

上記のコマンドを実行後に.sshディレクトリ配下に秘密鍵と公開鍵が作成されている事を確認。
.pub拡張子が付いているファイルが公開鍵となります（.pub拡張子がついていない方が秘密鍵）。

```:実行コマンド
$ ls ~/.ssh/
id_rsa.2021-10-12	id_rsa.2021-10-12.pub
```

以下のコマンドでmacに秘密鍵の登録を行う

```実行コマンド
ssh-add -K ~/.ssh/id_rsa.`date "+%Y-%m-%d"`
```

### 1.2. GitHubへSSHキーを登録する
#### 1.2.1. GitHubの設定画面へ移動
・https://github.com/settings/keys
または、以下を参考にしてください
![Screen Shot 2021-10-12 at 22.36.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433451/27a31592-fa9d-c488-4eae-bee46e3471e2.png)
#### 1.2.2. SSHキーの登録
「New SSH key」ボタンを押下後に「1.1.SSHキーを作成する」で作成した公開鍵の登録を行います。
![Screen Shot 2021-10-12 at 22.51.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433451/0c50f6a0-4d10-48cd-32ad-029f6aa8c034.png)
Titleは自分が分かりやすい文言を入力しましょう！
Keyは以下のコマンドを実行して結果をペーストすると楽かもしません。

```:実行例
$ cat ~/.ssh/id_rsa.2021-10-12.pub | pbcopy
```
![Screen Shot 2021-10-12 at 22.56.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433451/095d84dc-062a-96d5-e7ab-62c6f6be491c.png)

#### 1.2.3. SSH接続の確認

```Hi ユーザー名！```が出力されればSSH接続成功です！

```
$ ssh -T git@github.com
Hi kenro17! You've successfully authenticated, but GitHub does not provide shell access.
```

#2. git configの設定
git configコマンドを使用してエイリアスを切る事が可能です。
これによって多少の手間が省けます。

```:実行例
$ git config --global alias.st status
$ git config --global alias.df diff
$ git config --global alias.co commit
$ git config --global alias.br branch
$ git config --global alias.ck checkout
```

上記のコマンド実行後に例えば``git df``を実行すると``git diff``と同様に動作します。
また、``git config``コマンドは`$HOME/.gitconfig`に設定が保存されています。


#3. レビュー時に対象PRを取り込む方法

例えば、以下のPRレビューを依頼された際にローカルでチェックアウトしたい場合には以下のコマンドを実行します。
コマンドの２はPRの#後のナンバーを表しています。こちらはよしなに修正しする必要があります。

![Screen Shot 2021-10-16 at 18.13.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433451/009b1fd1-d001-5583-9555-fac25710b264.png)


```:実行例
$ gh pr checkout 2（取り込み対象のPRのナンバー）
```

``gh``コマンドがインストールされていない場合は以下のコマンドでインストール可能です（Macの場合）。

```
$ brew install gh
```


詳しくは以下の公式ドキュメント参照
https://docs.github.com/ja/github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

#[WIP] 4. 困らないブランチ命名

#[WIP] 5. コミットメッセージの分かりやすい書き方