解 説

dog_orgたとえロボットであろうと、共同で作業をする場合には権限が重要だ。
それぞれのチームに属することで権限が分かれていると作業しやすからだ。
Aチームは文書を読み込むだけで、Bチームは書き込みも許可されている。
Cチームは何も手を出せないとかね。
DogRoboはCチームに配属されそうだ。。

今回はまず新しく個人アカウントを作成してその後「Organizationアカウント」を新規で作成します。(例えばこれを会社のアカウントだと考えます)
次に「Organizationアカウント」で作成したリモートリポジトリを作成します。
更に共同作業者のメンバー登録を行います。この共同作業者の中に今まで使用していた自分のGitHubの「Userアカウント」も登録してみることにしましょう。

GitHubには個人用の「Userアカウント」と複数人用の「Organizationアカウント」があります。
個人用のアカウントの作り方はユーザー名とメールアドレスとパスワードを設定してユーザー登録するだけです。「Git入門(4)〜GitHubで共有する」を参考にしてください。

Organizationアカウント → 組織のアカウント
userアカウント → 個人のアカウント
どちらもプロジェクトを持つことができます。

「Organizationアカウント」は上記以外にユーザーごとのアクセス制限をしたり、複数の管理人や共同作業者を持つことができます。

Organizationアカウント の作り方

GitHubのTOPページ右上メニューの+から「New organization」で作成します。
組織名と、そのグループの連絡先となるメールアドレスが必用になります。
org1

「Organization name」と「Billing email」を記入して「freeプラン」を選択します。
その後、Create organizationボタンをクリックします。
org2

ここで確認のメールがGitHubから届きますので確認します。
org7

GitHubに新しく用意した個人用のアカウントで認証後Topページでアカウントスイッチャーで作成した「Organizationアカウント」を選びます。
アカウントスイッチャーは2016年10月現在ではページ左の真ん中くらいに存在します。下図参考
org3

「Organizationアカウント」で新しいリモートリポジトリを作成します。
org4

org5

リモートリポジトリができるとSourceTreeの設定で必用になるアドレスができあがります。リモートリポジトリの作成は個人用で作成したリモートリポジトリと同じ手順です。

org6

SourceTreeの設定

SourceTreeの設定は「Git入門(4)〜GitHubで共有する」の新規公開リポジトリを作成に既存にローカルリポジトリをPushする方法を参考にしてください。

SourceTreeの設定の手順を簡単に記述しておきます。(Mac用です)
ローカルリポジトリ作成を選択します。
org8

ローカルの保存先を決めます。
org9

「SourceTree」の画面のツールバー右側にある「設定」を開きます。
org10

リモートリポジトリ作成のときに出てきたURL/パスを記述します。
org11

これで「push」できるはずですが、エラーがでます。
org14

このエラーの原因が大事なポイントになります。
今回作成したリモートリポジトリは自分の「User権限」で作成したリポジトリではありません。新規に作成した「Userアカウント」の「Organizationアカウント」を使って作成したリポジトリです。SourceTreeには今まで使用していた自分のアカウントが登録されているはずです。つまり今回作成したリポジトリに「push」する権限がないのです。
尚、SourceTreeのアカウント登録は環境設定の中にあります。

org15

org16

そのため「個人User」が「push」するには「Organizationアカウント」でメンバーにしてもらう必用があります。

メンバーの追加

GitHubのTopページからアカウントスイッチャーで「Organizationアカウント」を選択して表示されるページのリンク部分をクリックするとリポジトリ作成のページが表示されます。(2016年10月現在の画面です。UIが変更になった場合はそれらしいところを探しましょう)
org20

org17

チームに属さずにメンバーになる方法

まずはチームに属さずにメンバーになる方法を説明します。
「people」タグを選択するとメンバー追加のページが表示されます。メンバーを追加するには「Invite member」ボタンをクリックして追加します。
メンバーのユーザー名を入力すればその途中から候補が出ますのでその中から選択できます。
「member」の権限は「Setting」タグから、「Member privileges」を選択すると「Admin」、 「Write」、 「Read」、 「None」などの権限を設定できます。
なお、メンバーに追加するとそのメンバーにメールで通知されます。メンバーがメールに書かれたリンクをクリックすると正式にメンバーに追加されます。
メンバーがメールを見てないとペンディング状態になりメンバーに追加されていないで保留状態になります。
org18

チームに属してメンバーになる

「Teams」タブをクリックするとチーム作成のページが表示されます。「Create a new team」ボタンをクリックしてチームを作成します。
org19

org21

org22

メンバー一覧のメンバー名のところがリンクになっているのでクリックするとそのメンバーの詳細を見ることができます。
org24

「Add a person」で追加したいメンバーを追加することができます。そうするとチームに属したメンバーになれます。

権限の設定

アクセス権の内容

Read Access
This team will be able to view and clone its repositories.(そのリポジトリに対しpullのみ可)
Write Access
This team will be able to read its repositories, as well as push to them.(そのリポジトリに対しpullとpushが可)
Admin Access
This team will be able to push/pull to its repositories, as well as add other collaborators to them.(そのリポジトリに対しpullとpushが可)

メンバーの権限の設定はあらかじめ作成しておいたリモートリポジトリで設定します。作成したリモートリポジトリの「settings」タブを選択して、左のメニューから「Collaborations & teams」を選択して「select team」から作成したチームを選択します。
org25

次に表示された「Teams」の中の「Admin」 「Write」 「Read」から権限を選びます。通常は「Write」になると思います。
org27

org26

以上の設定でメンバーになることで権限を持つと「push」できるようになります。先程エラーが出ていた「SourceTree」も「push」できるようになります。