チーム開発を始める際にチーム全員でgithubを共有する方法(rails)

##チーム開発をする際にgithubを全員で共有する方法

某プログラミングスクールにて、チーム開発を始める際に全員でgithubを共有するのに苦戦したので分かりやすく丁寧にまとめたいと思います。

まず用語の説明をします。

ブラウザ上でのgithub　＝　リモート
ブラウザ上でのgithubでのリポジトリ　＝　リモートリポジトリ　（リポジトリとは、chat-spaceなどのアプリケーションを指します。)
自分のPC　＝　ローカル
github desktop = ローカルリポジトリ

まず簡単に流れを掴み、それから１つ１つの詳細を説明していきます。

###流れ
１）チームの一人（これからオーナーと呼びます）が自分のローカルでアプリケーションを立ち上げる。
２）オーナーがそのアプリケーションを自分のgithubリモートと繋げる。
３）オーナーがチームメンバーを自分が作ったリモートリポジトリに招待する。
４）メンバーたちがそのリモートリポジトリに入り、その雛形のコードを自分のローカルにコピーする。
5）全員が何かしらの変更点を自分のエディターに書き、pushし、全員がちゃんと１つのリモートリポジトリにつながっているか確認する
6）全員がブランチを切って作業を開始する。


それでは早速初めていきます。

###１）チームの一人が自分のローカルでアプリケーションを立ち上げる。

チームの一人（基本的に誰でもOK）がローカルで普段何かアプリケーションを立ち上げる時にやっているように
rails newでアプリを立ち上げます。この際、できればバージョンを指定していた方が安全なので今回は5.2.3を指定して作っていく設定で行います。

今回作るアプリの名前はsampleと言う名前で作る設定で行います。

```console
$ rails _5.2.3_ new sample　-d mysql
```


###２）オーナーがそのアプリケーションを自分のgithubリモートと繋げる。

次に、このアプリケーションをgithubに繋げます。

```console
$ cd sample
$ git init　　 //現在のsampleをgit下に置きます
$ git add .   //全てのファイルを追加します
$ git status  //ちゃんと全てのファイルが入った確認できます
```
すると、このように全てのファイルがgit下に入ったことが確認できます。

[![Screenshot from Gyazo](https://gyazo.com/59e8089560e105d722cce9b4be59b95b/raw)](https://gyazo.com/59e8089560e105d722cce9b4be59b95b)


そして次にgithub desktopを開きます。
すると左上に
[![Screenshot from Gyazo](https://gyazo.com/17529d8df0a2fb6ee6e14ed354c3c18a/raw)](https://gyazo.com/17529d8df0a2fb6ee6e14ed354c3c18a)

と言う表示があるので
Current Repositoryをクリックしてください。（この時点でsampleと表示されていますが気にしなくて大丈夫です)
その後
Add ボタンをクリックし、

Add Existing Repository...

をクリックすると

[![Screenshot from Gyazo](https://gyazo.com/7b7c8b73d29ac226522308a09a660840/raw)](https://gyazo.com/7b7c8b73d29ac226522308a09a660840)

このような表示が出てくるかと思います。

ここで
Choose...

をクリックし、自分が作っているsampleファイルを選択し、
Add Repository

を選択すると、

[![Screenshot from Gyazo](https://gyazo.com/8a3644323824a48f53887f439f5e0ddb/raw)](https://gyazo.com/8a3644323824a48f53887f439f5e0ddb)

このような画面が出てくると思います。

ここで左の列の

[![Screenshot from Gyazo](https://gyazo.com/c1bb138fee0a68876563a72438914e9c/raw)](https://gyazo.com/c1bb138fee0a68876563a72438914e9c)

の欄のSummary(required)のところに、initial commit と記載し、
下の青いボタンのCommit to masterが押せるようになりますので、クリックしてください。

すると

[![Screenshot from Gyazo](https://gyazo.com/4cca0e9735ebe09e1581c42a794efcfc/raw)](https://gyazo.com/4cca0e9735ebe09e1581c42a794efcfc)

このようにローカルに変更点はもうないよ。と言う表示が出ます。

そして、右側にある

[![Screenshot from Gyazo](https://gyazo.com/e70ee6b8e4e18038f28a80bb7f260438/raw)](https://gyazo.com/e70ee6b8e4e18038f28a80bb7f260438)

で、Pubulish repositoryをクリックしてください。

すると

[![Screenshot from Gyazo](https://gyazo.com/cf47aeb63a7d9c9ca0cfe2ef5f98899b/raw)](https://gyazo.com/cf47aeb63a7d9c9ca0cfe2ef5f98899b)

この表示が出ます。

Nameはそのままで大丈夫です。

Descriptionは空欄で大丈夫です。

その下のチェックボタンはこのコードをプライベートにする。と書いていますが、
今回はチーム開発をするため、このコードを共有しないといけません。

よって、チェックボタンは外してください。

[![Screenshot from Gyazo](https://gyazo.com/d49a14e8d621412ab36c804286fa96de/raw)](https://gyazo.com/d49a14e8d621412ab36c804286fa96de)
この状態が正解です。

そしてPublish Repositoryをクリックしましょう。

そうすると、github ブラウザ（リモート）に、リモートリポジトリが作成されます。

おめでとうございます。

自分のgithubブラウザに行き、確認してください。
[![Screenshot from Gyazo](https://gyazo.com/6065b7266555537416cfe508a469874b/raw)](https://gyazo.com/6065b7266555537416cfe508a469874b)

このように自分のアプリケーションが表示できましたでしょうか。


###３）オーナーがチームメンバーを自分が作ったリモートリポジトリに招待する。

次に、このリモートリポジトリにメンバーを招待します。

まずこの画面でSetting ボタンをクリックしてください

[![Screenshot from Gyazo](https://gyazo.com/3bf431fbd1b1de2c23016426d5c725d8/raw)](https://gyazo.com/3bf431fbd1b1de2c23016426d5c725d8)

するとこの画面に飛びますので、次に

[![Screenshot from Gyazo](https://gyazo.com/c2f0ac5684cbcc36512d84cb91dd35aa/raw)](https://gyazo.com/c2f0ac5684cbcc36512d84cb91dd35aa)

Manage accessをクリックしてください。

するとパスワードを要求されますので入力してください。

すると

[![Screenshot from Gyazo](https://gyazo.com/95b573e49c01338a5531c33ade2abe72/raw)](https://gyazo.com/95b573e49c01338a5531c33ade2abe72)

このような画面があるページに飛びます。

ここでInvite a collaboratorをクリックしましょう。
すると検索画面が出てきますので、メンバー達のgithubでのアカウント名を正しく記入し、追加していきます。

追加されたメンバー達は、githubmに登録した時に使用したメールアドレスにメールが届きますので確認してください。

すると、メールには
View Invitationと書かれているのでクリックします。　（※メールはPCで閲覧しましょう）
すると、githubのページに飛びますので、そこで
Accept Invitationをクリックすると、無事、オーナーが作ったリポジトリに参加できます。



###４）メンバーたちがそのリモートリポジトリに入り、その雛形のコードを自分のローカルにコピーする。

お待たせしました。
ここからはやっとメンバー達も作業開始できます。
メンバー達はそのリポジトリに行ったあと、

[![Screenshot from Gyazo](https://gyazo.com/d3231049101a292a047b3d273fdcaa56/raw)](https://gyazo.com/d3231049101a292a047b3d273fdcaa56)

この
Clone or download
をクリックし、URLをコピーします。

そしてgithub desktopに行きます。

[![Screenshot from Gyazo](https://gyazo.com/17529d8df0a2fb6ee6e14ed354c3c18a/raw)](https://gyazo.com/17529d8df0a2fb6ee6e14ed354c3c18a)
そして左上にCurrent Repsitoryをクリックします。

そして
Add
をクリックし
Clone Repositoryをクリックします。

するとこのような画面が出てきます。

[![Screenshot from Gyazo](https://gyazo.com/52e2b52f336b80a3d51cad879b4441e1/raw)](https://gyazo.com/52e2b52f336b80a3d51cad879b4441e1)

ここではURLを選択してください。


[![Screenshot from Gyazo](https://gyazo.com/ec3501beb490b8c944ea30644a52dd5f/raw)](https://gyazo.com/ec3501beb490b8c944ea30644a52dd5f)

するとこのようなページに変わりますので

上の欄にはgithubブラウザでコピーしたURLをペーストします。

下のLocal Pathは、このコピーしたファイルをどこに入れるかを自分で決めることができます。

これで全員のローカル環境に、オーナーが作ったローカルと同じものがリモートを通じて繋げることができました。

ここからは実際に確認作業をします。

###5）全員が１つのリモートリポジトリにつながっているか確認する.

これは簡単です。一人一人がマスターブランチで適当にREAD.Meなどに記載を加え、commit、pushしてください。
すると、一人一人が変えた場所がgithub desktopのhistryに反映されているはずです。

###6）全員がブランチを切って作業を開始する。

ここからは実際にコードをバリバリ書いていく作業です。
全員ブランチを切り、各々の作業をしてください。


これで作業が開始できます。


以上になります。頑張ってください！

間違っている点やご指摘もお待ちしております。