【Git】Organization アカウントのリポジトリにメンバーを招待し参加するまでの手順

## ■ はじめに

### 説明
Organizationアカウントから招待されて、メンバー（外部コラボレータ）として参加した事はあるが、その逆（招待をする側）はなかった。先日社外のエンジニアと業務委託契約を締結して自社の開発に外部コラボレータとして招待する必要があったため、手順などを調べて今後の為にドキュメント化した。

- Organizationアカウントから招待されて、メンバー（外部コラボレータ）として参加したい場合
- Organizationアカウントからメンバーを招待したい場合

などの操作を解説。
本ページの構成としては下記。

1. 最低限リモートリポジトリないと話が進まない為作成。飛ばしても問題ない
2. 招待側の操作
3. 招待され受け入れる側の操作

ちなみに Organizationアカウントとは組織で様々な人が同時に使える共有アカウントみたいなもの。
詳細は GitHub Docs を参照。

https://docs.github.com/ja/get-started/learning-about-github/types-of-github-accounts#organization-accounts

### 【前提】
Organization アカウントの People にメンバーへ追加されていること。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/4fd97cf8-bd4f-27f1-c48e-adc27e3c7292.png)

## ■ 手順

### 1. 事前準備
1.1　共有するリモートリポジトリの作成をする。（ .gitignore とかライセンスとかは組織のルールに則って下さい）
諸々情報入力したら Create repository を押下。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/d982282c-050e-5a44-8442-247482a4d705.png)

1.2　リモートリポジトリはこれでOK。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/cdfd8358-bc78-6d54-cda0-9f90e5c55c4f.png)

### 2. 招待側
2.1　Setting → Collaborators and teams → Manage access を押下すると、上部にウインドウが表示されるため、追加する GitHub アカウントのメールアドレスを入力。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/873dac77-9cc2-5f04-6f2d-d7ebe9af81be.png)

2.2　権限設定の画面になるため「最小権限の原則」に則り権限付与。（IPA の情報セキュリティ基本原則のひとつ）
その後、Add ◯◯ to this repository を押下。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/51848610-403b-d0a8-75bf-7d54f438dbee.png)

2.3　collaborator (コラボレーター) として追加が完了。
現在の Status は保留中となるため、該当メンバーに Accept (受け入れ) を選択してもらう様に依頼。（有効期限は7日）

- Accept 前

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/ffae4184-9a79-532d-fbf0-25b50093d4e7.png)

- Accept 後

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/fdf0dc47-ae0a-9875-5266-e27f897d4925.png)

### 3. Accept (受け入れ) 側
3.1　対象のメールアドレスに下記の様に招待メールが飛んでいるため、 View invitation を押下。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/c0c7bb87-224f-0553-a5ea-2bf6c98d0d17.png)

3.2　Accept invitation を押下。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/8315cee0-6ccc-d46c-9920-6fee00fa7fdf.png)

3.3　上部に You now have maintain access ~ とフラッシュメッセージが表示されれば正常に追加が出来ている。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/7c8ef870-b99f-dcd6-8700-2145d9a6fd7c.png)

3.4　ターミナルを立ち上げて、正常に SSH が出来るか一応確認。successfully となること。
```bash
% ssh -T git@github.com                             
Hi user! You've successfully authenticated, but GitHub does not provide shell access.
% 
```

3.5　該当プロジェクトの Code から SSH タブを選択し、 clone の後に貼り付ける。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/04b1c034-2c79-5ce7-523d-36edc660ee4c.png)

```bash
% git clone git@github.com: ~~
Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
% 
```

3.6　一応 ls 叩いて、ちゃんと clone 出来ていることを確認。
```bash
% ls -l | grep "test"
drwxr-xr-x   4 user  staff   128  4 16 21:33 test
% 
```

以上。

## ■ Reference Site

- Organization アカウントについて解説している公式ドキュ

https://docs.github.com/ja/get-started/learning-about-github/types-of-github-accounts#organization-accounts

- これが、本ページのやりたい事が書いてる公式ドキュ

https://docs.github.com/ja/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization