【GitHub】初めてのGitHub~GitHubリポジトリ作成まで

# はじめに
次案件がIaaS(Infrastructure as a Service)なのでその勉強するように言われましたが、今まで全く縁がなかったのでIaaSとは？？でした。
さらに構築を自動化ツール等を用いるため、teraformやGitHubを触れと言われましたが、何のためのものなのか全くわからず。そこでGitHubについて同僚に聞いたら「バージョン管理ツールです」と言われました。

余計わからなくなったので、お勉強のためしばらく業務関連の記事を作成したいと思います。

# GitHubとは
GitHubとは、**Git（拠点）** の **Hub（集まり）** とのこと。

そもそもGitとは、**分散型バージョン管理システム**の一つで、CLIの一種であり、ソースコードのバージョン管理するツールとして作られたそうです。

https://github.co.jp/?_fsi=fxyhmG1w


:::note warn
以降記載の内容は、すべてWindowsでの操作になります。
:::

# GitHubの用語
前提としてGitHubで使用される用語を全く知らないので、どのような用語があるのかを調べてみました。

### ローカル/リモートリポジトリ
基本的にはローカルリポジトリで作業したものをリモートリポジトリに反映するそうです。

・***リポジトリ***：ファイルやディレクトリの状態を保存するスペースのこと。管理したいディレクトリをリポジトリと連携させることで、そのディレクトリ内のファイルの変更履歴を記録し、保存していくことができます。

・***リモートリポジトリ***：ネットワーク上に存在する。なおGitHub上で作成が可能。

・***ローカルリポジトリ***：自分のPC内に記録される。GitHub上で作成したリモートリポジトリをクローンする形で作成するのが一般的。

### クローン（clone）
リモートリポジトリをローカルにダウンロードするコマンドです。クローンしたタイミングのリモートリポジトリと全く同じ環境をローカルに作成します。

### ブランチ（branch）
作業を分岐させて履歴の流れを保存していく方法のこと。1つのリポジトリに対して、複数のメンバーが同時に修正を行うことができる。
おおもとのデータがあれば、修正されたブランチをマージさせることで、複数の修正がひとつのファイルに反映されます。

### コミット、プッシュ（commit/push）

・***コミット***：ファイル追加や変更の履歴をリポジトリに記録すること。
・***プッシュ***：ファイル追加や変更の履歴をリモートリポジトリにアップする操作のこと。

※なお　コミット前に修正したファイルをaddする必要があります。Gitはまず仮の保管場所に変更したファイルをまとめ、それに名前をつけてパッケージにするという手順をとります。この仮の保管場所に保存するコマンドがadd、名前を付けてパッケージにするコマンドがコミットです。

### プルリクエスト（Pull request）
自分が行った変更をオリジナルのものに反映させたいというときに使う通知方法。オリジナルのオーナーにリクエストを通知することができます。
プルリクエストの処理は、GitHub上で行うことが可能です。ブランチに対してプッシュを行った場合、GitHubで該当のリポジトリの画面を開くと表示される「Compare & pull request」というボタンを押下することで、プルリクエスト作成画面に移行できます。

### フォーク（fork）
複数に分派したほかのひとのプロジェクトのリポジトリをコピーして、自分のものを改変していくこと。オリジナルのファイルに対する編集アクセス権がなくとも、自分の場所に取り入れることによって編集できるようになります。

# GitHub使用時の流れ

1. リポジトリを作成
2. ローカルにclone
3. ブランチ作成
4. ファイル修正
5. 確認、Add、Commit
6. Push
7. Pull&Request
8. Approve
9. Merge

この手順についてはまた別の記事に書きたいと思います。

# Gitのインストール

GitHubを使用する場合は、まずはGitのインストールが必要らしいです。
以下のサイトより、ダウンロードしてインストールします。

https://gitforwindows.org/

### ダウンロード
上記のサイトにいき、[Download]ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/bf61b6c7-ecb0-ce06-c77c-26c2f25de28a.png)

### インストール
ダウンロードされたexeファイルをダブルクリックすると、以下の画面が表示されます。
ここでは設定値などをとくに変更せず、すべて[Next]を押下し続けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/b3bd36d0-5e86-c044-3323-d0c91ab92873.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/ba040b25-9cca-5ed9-4b79-05de6a7b9e2f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/4117f7e7-5990-c151-f817-2c238d2beedc.png)

最後の画面が表示されたら、[Finish]ボタンを押下し、インストールを終了します。

### Gitの初期設定

Gitのインストールが完了すると、コマンドラインツール「Git Bash」もインストール済みとなります。GitBashまたはPowershellを起動し、以下のコマンドを実行します。

(1) ユーザ名を登録します。

```ruby
$ git config --global user.name [任意のユーザー名]
#$ git config --global user.name piromo
```

(2) メールアドレスを登録します。
```ruby
$ git config --global user.email [任意のメールアドレス]
#$ git config --global user.email XXXXXXXXXXX@XXXXX.com
```

(3) 登録が正常に完了したことを確認します。以下のような結果が出力されます。
```ruby
$ git config --list
～省略～
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=piromo
user.mail=XXXXXXXXXXX@XXXXX.com
```

# GitHubのアカウント作成
「ギットハブ・ジャパン」の公式サイトにアクセスし、GitHub用のアカウントを作成します。

https://github.co.jp/?_fsi=fxyhmG1w

私はすでにアカウントだけは作成済みだったので、そのままログインしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/9a552e1b-803d-1a64-c85b-6c977ef023a1.png)


# リモートリポジトリの作成

(1) GitHub管理画面で、「Create Repository」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/55865e79-9abd-8cdc-7676-4a7b68693fca.png)

(2) 作成したいリポジトリの内容を指定して「Create repository」を押下します。
・Repository name：任意のリポジトリ名を指定
・Pubilic or Private
・Add .gitignore：Terraform（私の場合はTerraformでAWS構築をしたいため）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3817308/5ac4e892-27f1-5c59-842f-ac9638cbd31d.png)



# 参考
https://www.akkodis.co.jp/candidate/insight/column_30
https://www.kagoya.jp/howto/it-glossary/develop/howtousegithub/