Githubを使う場合、Railsプロジェクト生成の手順


## 読む前に

* この記事は初級者向けです。
* 新人教育のため作成しました。
* 新人開発者がgitとgithubを使って自主練習ができるように作成しました。

## 実習環境

* macOS Sierra

## Github上でリポジトリの生成（リモート）

Githubにアカウントを持ってることを前提とします。
emailさえあれば無料で作られるので、持ってない方は作りましょう。

* Gitはローカルリポジトリとリモートリポジトリの構成で使います。
  Github上でリポジトリを生成するということはGitのリモートリポジトリを生成することです。
  New repositoryを選びます。
![create_repository01.png](https://qiita-image-store.s3.amazonaws.com/0/93752/c77fcbe9-77ce-fa09-498b-eeb2c5a5258a.png "create_repository01.png")

* Repository nameを入力し、.gitignoreファイル追加します。
  今度のサンプルはRailsなので、Railsを選びました。
  他の言語やフレームワークも選べます。
![create_repository02.png](https://qiita-image-store.s3.amazonaws.com/0/93752/d45bf58f-a113-3d8e-4e11-0b3d361ec6cf.png "create_repository02.png")

* 緑色のCreate repositoryボタンを押します。
![create_repository03.png](https://qiita-image-store.s3.amazonaws.com/0/93752/2a4915f0-b9c2-e766-96fd-f5dcd9cba7c5.png "create_repository03.png")

* リポジトリが生成されました。
![create_repository04.png](https://qiita-image-store.s3.amazonaws.com/0/93752/087e14b3-ef61-7a1e-c26b-9799377b2eb1.png "create_repository04.png")

## SSHキーの登録

Githubに作成したリポジトリを利用するためにはSSHキーを生成して登録しなければなりません。
セキュリティのため必要です。
鍵とドアの関係で考えると分かりやすいです。
![key_door.png](https://qiita-image-store.s3.amazonaws.com/0/93752/22363371-07a2-23df-6790-2c2feda9877c.png "key_door.png")

### Gitの設定

* ローカルPCにGitのグローバル設定を行います。
* nameとemailは自分のものを入力してください。

```zsh
% git config --global user.name "devtopia"
% git config --global user.email "devtopia@example.com"
% cat ~/.gitconfig
[user]
	name = devtopia
	email = devtopia@example.com
```

### SSHキーの生成（ローカル）

* ローカルPCにて公開鍵/秘密鍵を生成します。

```zsh
% ssh-keygen -t rsa -C 'devtopia@example.com'
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/devsoul/.ssh/id_rsa): -> そのままEnter
Enter passphrase (empty for no passphrase): -> パスワードを入力
Enter same passphrase again: -> パスワードを再入力
Your identification has been saved in /Users/devsoul/.ssh/id_rsa.
Your public key has been saved in /Users/devsoul/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:lyC4Jh9tOHb48cVQv0NhEElTmG2xGCqPNC2cuN9Kvys devtopia@example.com
The key's randomart image is:
+---[RSA 2048]----+
|         .BO=.   |
|     + o o+*oo   |
|    o O = ..+    |
|     B B + o .   |
|  . X * S = o    |
|   = B + o   .   |
|    . + o        |
|     .Eo         |
|      ..+o       |
+----[SHA256]-----+
```

* **生成された公開鍵（ドア）をGithubへSSHキーとして登録し、ローカルPCにある秘密鍵（鍵）を使って認証を行います。**
* 生成した公開鍵の内容をクリップボードへコピーします。
* 公開鍵には.pubが付いています。秘密鍵には付いていません。

```zsh
% pbcopy < ~/.ssh/id_rsa.pub
```

### SSHキーの設定（リモート）

* Settingsを選びます。
![add_ssh01.png](https://qiita-image-store.s3.amazonaws.com/0/93752/b4528740-bb44-ca38-7b78-97bc8f579c25.png "add_ssh01.png")

* SSH and GPG keysを選びます。そしてNew SSHキーを選びます。
![add_ssh02.png](https://qiita-image-store.s3.amazonaws.com/0/93752/ac5ec6c0-d3f3-ac64-cbee-766d053b5a03.png "add_ssh02.png")

* Titleにはグローバルで登録したemailを、Keyにはcommand + v(又はctrl + v)でコピペします。

## リポジトリの生成（ローカル）

* まずGitはワークツリー＞インデックス＞ローカルリポジトリ＞リモートリポジトリ（Github）の順で操作する必要があることを覚えておいてください。
* リモートリポジトリからローカルにクローン（複製）します。

```zsh
% git clone https://github.com/devtopia/rails_basic.git
```

* Railsのプロジェクトを生成します。
* プロジェクトを生成するときのオプションの説明は割愛します。
* .gitignoreファイルは既に生成したのでスキップします。

```zsh
% rails new rails_basic -T -B -d mysql
       exist
      create  README.md
      create  Rakefile
      create  config.ru
    conflict  .gitignore
Overwrite /Users/devsoul/Documents/basic/rails_basic/.gitignore? (enter "h" for help) [Ynaqdh] n
        skip  .gitignore
      create  Gemfile
      create  app
... 省略 ...
```

* 新しく生成されたファイルを確認します。（ワークツリー）

```zsh
% cd rails_basic
% git status -s
?? Gemfile
?? README.md
?? Rakefile
?? app/
?? bin/
?? config.ru
?? config/
?? db/
?? lib/
?? public/
?? vendor/
```

* ??で表示されたのが新しいファイルです。
* このファイルをインデックスに追加します。
* Aで表示されたファイルがインデックスに追加されたファイルです。（インデックス）

```zsh
% git add .
% git status -s
A  Gemfile
A  README.md
A  Rakefile
... 省略 ...
```

* リポジトリへコミットします。（ローカルリポジトリ）

```zsh
% git commit -m "first commit"
```

* Github上のリポジトリへ反映します。（リモートリポジトリ）
* originはリモートリポジトリを指している別名です。（アドレスが長いから入力が面倒になるため普段は別名を使います。）
* masterはローカルリポジトリです。（gitのデフォルトブランチだと考えてください。）

```zsh
% git remote add origin git@github.com:devtopia/rails_basic.git
% git push -u origin master
```

## Github上でリポジトリの削除

自主練習の中で削除したいリポジトリがある場合は下記の手順で試してみてください。

* 該当リポジトリからSettingsを選びます。プロフィールからリポジトリ一覧の確認ができます。
![delete_repository01.png](https://qiita-image-store.s3.amazonaws.com/0/93752/91ee5985-1e1a-a0c7-b9da-14885c0510ad.png "delete_repository01.png")

* 下段までスクロールするとリポジトリの削除ボタンが見えます。削除ボタンを押してください。
![delete_repository02.png](https://qiita-image-store.s3.amazonaws.com/0/93752/8007bb1a-1039-0f33-e208-ada6af2635e7.png "delete_repository02.png")

* 削除確認画面から削除対象のリポジトリ名を入力してdelete this repositoryボタンを押します。
![delete_repository03.png](https://qiita-image-store.s3.amazonaws.com/0/93752/1f0b97f8-d487-df5c-e953-4b0c40bda944.png "delete_repository03.png")