忙しい人のためのmacでのGitHub設定

:::note warn
作成日は令和4（2022)年12月21日です。
:::

## gitの環境設定
### ユーザー名を設定する

```shell
git config --global user.name "ユーザー名"
```
:::note alert
そのままコピって「ユーザー名」で登録しないように。
:::

### メールアドレスを登録する
Githubに登録するメールを自分のプライベートなメールにすると外から丸見えで、スパムメールが届く（主に外国から）
対策として、GitHubが各ユーザーに一つずつ割り当てたメールを使う。

#### Settingsを開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/331859ea-6992-b5e3-6bab-eada08f11e85.png)
どこからでも良いのでSettingsを開く。

#### Emailsを開く

Emailsを開くと、`数値+アカウント名@users.noreply.github.com`のようなメールアドレスが書かれている。このメールアドレスを使うと良い。
下部の赤枠の部分にはチェックが入っていることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/ab9c3156-f432-0550-f129-d4eb50f0d6b7.png)

#### Macのターミナルでメールを登録する

確認できたら、MacのターミナルでGitで使うメールアドレスを登録する。

```shell
git config --global user.email 数値+アカウント名@users.noreply.github.com
```

### コミット時に使うエディタを登録する(お好みで)
Visual Studio Code(VSCode)を使うならVSCode側で「code」で起動できるように設定しないといけない。

#### VScodeの設定
コマンドパレットに`shell`と書けば候補が出る。
Installの方を選ぶ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/b005dad3-a1db-f30d-9f40-0e589f149d48.png)

インストールするのに管理者権限がいるよ！と言うのでOKを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/2673f6aa-297f-6214-b481-9514beace3c6.png)

端末のパスワードを入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/3378b3c7-81e2-dbad-e0ff-5e421a115f0a.png)

成功したよ！というメッセージが出たらOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/095c9e8e-11a9-64dc-ee03-a1e43608e66f.png)

これでターミナルからVSCodeが`code`というコマンドで起動できるようになった。
あとは次のようにgitコマンドを打てばエディタが登録できる。

```shell
git config --global core.editor 'code --wait'
```


## sshの設定

ターミナルで~/.sshに移動する。
もし、既存の鍵があるなら名前を変えるなどしないと大変なことになるので、フォルダの中身も確認をしておくと良い。
```shell
cd ~/.ssh 
ls -la
```

特に以前作った鍵がないのであれば、以下の手順の通りにやれば良い。ある場合は作る鍵の名前を変える等で対応をする。

### ssh-keygenで鍵作成

ssh-keygenする。強度については、ED25519を使う。
GitHub公式もED25519使えと書いてあるのでそうする。
```shell
ssh-keygen -t ed25519 -C "github.com"
```
-Cの後ろのコメントは何でも良い。-Cはコメントのオプション。
とりあえずわかりやすくしておいた。

```shell
npc@npc .ssh % ssh-keygen -t ed25519 -C "github.com"    
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/myname/.ssh/id_ed25519): # 保存先。そのままEnterでもいい。
Enter passphrase (empty for no passphrase):  # ばれないようなパスフレーズ
Enter same passphrase again: # もう一回パスフレーズ
Your identification has been saved in /Users/myname/.ssh/id_ed25519
Your public key has been saved in /Users/myname/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:***************************************** github.com
The key's randomart image is:
+--[ED25519 256]--+
| something       |
|                 |
+----[SHA256]-----+
```
このような感じで作られたらOK。鍵は見せたくないので伏せ字にした。

### ssh-agentの利用
公式に従う派なので、ssh-agentも使う。パスフレーズ何回も打ちたくないけれどパスフレーズのない鍵なんて許せない派でもあるため。
configファイルを使って設定していくので、configファイルを定義する。

`open ~/.ssh/config`で開けるならば良いが、作っていないならば開けないので自分で作る。
`touch ~/.ssh/config`をしてから`open ~/.ssh/config`する。
複数のアカウントを使い分ける必要がある時（会社用とプライベート用が分離しているとか）であればconfigで分けると良い。

書く内容は以下の通り。
```
Host *.github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
```
AddKeysToAgentとUseKeychainは重要。IdentityFileはファイル名を変えているならば変える。

保存をしたらターミナルに戻って、以下のコマンドを入力。
```shell
eval "$(ssh-agent -s)"
```

```shell
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
```
`Error connecting to agent: Connection refused`が出たら`eval "$(ssh-agent -s)"`がうまく実行出来ていない可能性が高い。
成功したらパスフレーズを入力するように言われるので、`ssh-keygen`で作成した時のパスフレーズを入力する。

```
Identity added: /Users/myname/.ssh/id_ed25519 (コメントの文字)
```
と出たらOK。
一度この作業をしておけば、次からパスフレーズを求められることがなくなるので便利。（色々設定は必要だけれども）

次に、公開鍵をGitHubに登録するため、公開鍵の内容をクリップボードに保存しておく。

```shell
pbcopy < ~/.ssh/id_ed25519_github.pub 
```

ターミナルの作業は一旦ここでストップ。まだ使うのでそのままにしておく。

### GitHubの設定

github.comに戻り、Settingsから、「SSH and GPG keys」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/5fd13662-6824-b910-739f-906eeddc03b9.png)

「New SSH key」のボタンをクリックして、公開鍵を貼り付ける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/ad05c9a8-ef95-32f8-d870-c3ec0cd225e4.png)

「Add SSH key」を押すとアクセス認証画面が出るので、指示に従う。パスワードを使っても良い（Use your password)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/c79b2b43-28b2-4f8f-3163-ca60835a1812.png)

下図のように登録した内容が表示されたらOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/421964/2d8fc7a1-a2f1-3b6d-2634-eb01a0decd29.png)

### 接続テスト

ターミナルに戻り、アクセスできるか確認をする。以下のまま入力する。
```shell
ssh -T git@github.com
```
以下のようなメッセージが出るので、最後の行で`yes`と入力する。
```
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:****************************************
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```

このメッセージが出たら成功。
```
Hi MaskerDog! You've successfully authenticated, but GitHub does not provide shell access.
```

:::note warn
注意
再起動でssh-addが消えるので対応をする必要がある。
.zshrcに`ssh-add --apple-load-keychain`を追加しておくとターミナル起動時にkeyを追加してくれる。
:::

## 最後に
公式が一番くわしい。
https://docs.github.com/ja/authentication/connecting-to-github-with-ssh