プロジェクトにGit環境構築～GitHUBへのPushまで（メモ）

# はじめに

本記事は、「Git」の環境構築及び「GitHUB」へのPushまでの手順を自分用にまとめたものです。
また、当記事は前回の投稿記事「[Ruby on Rails6.0の環境構築から新規プロジェクト作成まで（メモ）](https://qiita.com/yuki68427913/items/a87cbe68abede73a78c5)」で作成した環境を前提に作成していますのでご注意ください。

# 前提条件

* クライアントはWindows（あまり意味はない）
* 開発環境はCloud9
* Linuxコマンドの使い方がわかる程度の力量
* GitHUBのアカウントは作成済み

# 参考記事

> [Git と GitHub の違い](https://qiita.com/morikuma709/items/7a3f873ceda52439df29)
> [gitとgithubの連携](https://qiita.com/oo-shin/items/06963c7a1b3219347348)
> [Git/GitHubレベル別オススメ学習サイトまとめ完全保存版【2019.06】](https://qiita.com/thinkalot/items/b3c2e9060f46f5d4ea46)
> [GitHub 初心者の最初のプッシュ](https://qiita.com/folivora/items/763d06b26bafd573a456)
> [良い README.md を書くためのテンプレート（翻訳）](https://qiita.com/KamataRyo/items/466255fc33da12274c72)
> [わかりやすいREADME.mdを書く【外部サイト】](https://deeeet.com/writing/2014/07/31/readme/)
> [Gitチートシート【外部サイト】](https://github.github.com/training-kit/downloads/ja/github-git-cheat-sheet/)
> [github private public 変更](https://qiita.com/HyunwookPark/items/1d24972dd71612eb81c9)
> [GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)

# GitHUB側の準備

## 新規リポジトリ作成

まずは新規のリポジトリを作成するために「New」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/3aaca600-0b4f-9a0c-9d52-b8d773cf6a52.png)

次にリポジトリ作成のために必要な情報を入力して「Create Repository」ボタンをクリックします。
設定すべき内容は下記の通りになります（今回はPrivate設定で作成しますが後でPublicに変える事も可能です）。

| Repository name | Public/Private |
|:--------:|:--------:|
| プロジェクト名 | Private |

作成できると下記のような画面が表示されます。
記載されているコマンド類は後で必要となります。
今回はSSHによるPushを行う予定ですので、赤枠部分にある「SSH」をクリックして、
各種表示されている情報をテキストファイル等にとりあえず退避しておいてください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/3f7aecd1-8d17-ea6c-48b0-839bbf558d4c.png)

次にGitHUBにSSHキーを登録していきます。
まずは開発環境（Cloud9）に戻ってSSHの秘密鍵と公開鍵を発行します。

| 保存先 | 秘密鍵 | 公開鍵 |
|:--------:|:--------:|:--------:|
| /home/ユーザー名/.ssh | id_rsa | id_rsa.pub |

```shell-session:秘密鍵と公開鍵作成
$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/ユーザー名/.ssh/id_rsa): 【Enterキー】
Enter passphrase (empty for no passphrase): 【お好きなパスフレーズ】
Enter same passphrase again: 【上記と同じ値】
Your identification has been saved in /home/ユーザー名/.ssh/id_rsa.
Your public key has been saved in /home/ユーザー名/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:27YH4RBz7wBOeqDcTXyHVcX9I9wGvE9VxwFhGM8aNrs ユーザー名@ip-XXX-XXX-XXX-XXX
The key's randomart image is:
+---[RSA 2048]----+
|       .   +==+=B|
|      . B +.=o  *|
|   . o B * *.o+ o|
|    o o = + *+ =.|
|       .So *  = .|
|         oo o  . |
|        . oE     |
|         . ..    |
|          ..     |
+----[SHA256]-----+
```

作成した公開鍵を表示してクリップボードにコピーします。

```shell-session:公開鍵クリップボードコピー
$ cat /home/yu_inuka/.ssh/id_rsa.pub 

ssh-rsa 【以下省略】/RE/M2Bp0ItSOkESvqFOXBf6ov1tYd8Ei7Hr ユーザー名@ip-XXX-XXX-XXX-XXX
```

GitHUBの画面に戻って右上の「アイコン」＞「Settings」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/cb5c6550-7627-e401-ff6d-4552851becaf.png)

左側にある「Personal settings」＞「SSH and GPG keys」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/10b153a3-983b-d718-dd56-163900c9d4bb.png)

右上にある「New SSH key」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/9f2e73a1-4301-59cc-982a-7f8074dc3adb.png)

「Title」に分かりやすい名前を付けて「Key」に公開鍵情報を入力して「Add SSH Key」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/09933a25-3427-ad8f-e535-b6b2687d7531.png)

下記のようにKey情報が追加されていれば完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/7b619aec-5d17-4fc3-3112-292b3bd8f8f5.png)

# Git環境設定（Cloud9）

まずは開発環境（cloud9）に戻ってGit自体がインストールされているか確認します。

```shell-session:バージョン確認
$ git --version

git version 2.14.5
```

もし、インストールされていない場合は、下記コマンドでインストールします。

```shell-session:Gitインストールコマンド
$ sudo yum -y install git
```

次にGitの環境設定を実施します。

| user.name | user.email |
|:--------:|:--------:|
| コミット操作の名前 | コミット操作のメールアドレス |

```shell-session:Git環境設定
$ git config --global user.name "ユーザー名"
$ git config --global user.email "メールアドレス"
```

次に対象プロジェクトをローカルリポジトリにします。

```shell-session:Git初期設定
$ git init

Reinitialized existing Git repository in /home/ユーザー名/cloud9/プロジェクト名/.git/
```

プロジェクトの各種ファイルをローカルリポジトリへ登録します。

```shell-session:ローカルリポジトリ登録
$ git add --all

$ git commit -m "first commit"

【以下省略】
 create mode 100644 vendor/bundle/ruby/2.6.0/specifications/websocket-driver-0.7.1.gemspec
 create mode 100644 vendor/bundle/ruby/2.6.0/specifications/websocket-extensions-0.1.4.gemspec
 create mode 100644 vendor/bundle/ruby/2.6.0/specifications/xpath-3.2.0.gemspec
 create mode 100644 vendor/bundle/ruby/2.6.0/specifications/zeitwerk-2.2.1.gemspec
 create mode 100644 yarn.lock
```

リモートリポジトリへの接続確認を実施します（最後のメッセージが表示されればＯＫです）。

```shell-session:リモートリポジトリ接続確認
$ ssh -T git@github.com

The authenticity of host 'github.com (52.192.72.89)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 【yesを入力】
Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts.
Enter passphrase for key '/home/ユーザー名/.ssh/id_rsa': 【パスフレーズを入力】

Hi 【XXXXXXXX】! You've successfully authenticated, but GitHub does not provide shell access.
```

リモートリポジトリへの登録を実施します。
コマンドの「`git@github.com`【以下省略】.git」部分はテキストファイルに退避させた情報になります。

```shell-session:リモートリポジトリへの登録
$ git remote add origin git remote add origin git@github.com:【GitHUBに登録した名前】/【リポジトリ名】.git
```

エラー等が出なければ、実際にPushを実行します。

```shell-session:リモートリポジトリへのPush
$ git push -u origin master

Enter passphrase for key '/home/ユーザー名/.ssh/id_rsa': 
Counting objects: 7586, done.
Compressing objects: 100% (7125/7125), done.
Writing objects: 100% (7586/7586), 32.11 MiB | 3.35 MiB/s, done.
Total 7586 (delta 1191), reused 0 (delta 0)
remote: Resolving deltas: 100% (1191/1191), done.
To github.com:【GitHUBに登録した名前】/【リポジトリ名】.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
```

最後にGitHUB上で対象のリポジトリが下記のような状態になっていれば今回の対応は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531775/b28988d0-35bf-0675-3118-27770875ce41.png)