Git&GitHub環境構築マニュアル

GitとGithubの習得はIT企業で仕事をするのにはマストです。システム開発に携わるエンジニアとなる人は必ずマスターしましょう！

# （コマンドリスト）忙しい人のために

|コマンド|機能|
| --- | --- |
| git branch | ブランチの確認・作成 |
| git checkout | ブランチの切り替え |
| git add | ステージングエリアに登録 |
| git commit | ステージングエリアに登録した内容をコミット |
| git push | ローカルリポジトリの変更をリモートリポジトリに反映 |
| git pull | リモートリポジトリの変更をローカルリポジトリに反映 |

# バージョン管理の概念理解

本記事は、GitやGithubの概念についての理解があることを前提でGitとGithubの使い方の説明を行っています。バージョン管理の概念やGitの仕組みなどについては以下の動画を参考に学習を行ってください。

<iframe width="560" height="420" src="https://www.youtube.com/embed/1l8oBEown8c" title="Gitとは？GitHubとは？10分で仕組み・使い方を解説！【超入門編】" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# 1. インストール

### 1.1. VsCodeのインストール

以下のリンクからVscodeをインストールします。すでに、インストールをしている人は次に進んでください。

[https://code.visualstudio.com/download](https://code.visualstudio.com/download)

### 1.2. Gitのインストール

以下のリンクから、使用している環境に合ったGitのインストーラーをダウンロードして、インストールしてください。

[https://git-scm.com/downloads](https://git-scm.com/downloads)

# 2. Gitの設定

### 2.1. VsCodeでGitBashを起動

VsCodeでターミナル（Terminal）を起動します
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/b1b71092-2e95-5704-ee93-46a261f9f14c.png)

起動したターミナルの右端にある、ターミナルの追加の選択から「GitBash」を選択します。
![cd2ade05-dc16-4e7e-bccd-d0912ba6de52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/256fed5b-0965-73af-91e8-6f61cb22e8e5.png)

### 2.2. Gitのユーザー登録

ユーザー名を登録します。ここでは、チームの誰が見ても個人を認識できる名前を設定してください。「example-name」の部分にユーザー名を入力してGitBashのコマンドラインで実行してください。

```bash
git config --global user.name example-name
```

次に、メールアドレスを設定します。「example@mail.com」の部分に個人のメールアドレスを入力してGitBashのコマンドラインで実行してください。

```bash
git config --global user.mail example@mail.com
```

（省略可）最後に、上で入力したユーザー名とメールアドレスが正しく登録されていることを以下のコマンドを実行して確認してください。

```bash
git config --list
```

※コマンドを実行すると、下のほうに「:」が表示される場合があります。この表示があるときは、「下矢印キー」を押すと表示をスクロールすることができます。（表示を終了するときは「Qキー」を押してください。）

# 3. GitとGithubの接続

### 3.0. アカウント作成

ここでは、社用のGitHubアカウントがある前提で説明します。アカウントをまだ持っていない人は以下のリンクからアカウントの作成を行ってください。

[GitHub でのアカウントの作成 - GitHub Docs](https://docs.github.com/ja/get-started/start-your-journey/creating-an-account-on-github)

### 3.1. SSHキー（秘密鍵・公開鍵）の生成

まず初めにSSHキーを生成します。下記のコマンドの「example@mail.com」を自分のメールアドレスに書き換えて実行してください。この時、「Enter file in which to save the key」と表示されるのでEnterキーを押してください。すると、「Created directory」の欄に鍵の保存先が表示されます。次に、パスフレーズ（パスワードのようなもの）の入力を求められます。「Enter passphrase」に続いて任意のパスフレーズを入力してEnterキーを押してください。

```bash
ssh-keygen -t ed25519 -C "example@mail.com"
```

※パスフレーズは入力しても画面上には何も表示されません。
※パスフレーズは同じものを２回入力する必要があります。

### 3.2. 公開鍵をコピー

次に、生成したSSHキーのうち、公開鍵をクリップボードにコピーします。OSの種類によってコマンドが異なるので実行する際には注意してください。

**Windows**

```bash
Clip < ~/.ssh/id_ed25519.pub
```

**macOS**

```bash
pbcopy < ~/.ssh/id_ed25519.pub
```

### 3.3. 公開鍵をGitHubに登録

以下のリンクにアクセスしてGitHubのSSHキーの登録画面を開きます。

[https://github.com/settings/ssh/ne](https://github.com/settings/ssh/new)
![Untitled 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/8e43943a-b83e-7c1b-f5da-fa5f8a8ae28f.png)

画面を開いたら、「Title」、「Kye」をそれぞれ設定します。「Title」には任意の全角半角文字列を設定できます。「Kye」にはうえでコピーした公開鍵を張り付けてください。入力が終わったら、「Add SSH Kye」を押して登録を完了してください。

※KyeTypeは「Authentication Key（認証キー）」と「Signing Key（署名キー）」の２種類選択できますが、ここでは認証を行うための公開鍵を登録するので、デフォルト「Authentication Key」にしてください。

### 3.4. GitとGithubのSSH接続

以下のコマンドをコマンドライン上に入力しSSH接続を行ってください。実行すると、「Are you sure you want to continue connectiong（yes/no）?」が表示されるので、「yes」と入力してEnterキーを押してください。その後、上で設定したパスフレーズを入力してEnterキーを押してください。「You’ve successfully authenticated」と表示されたら接続成功です。

```bash
ssh -T git@github.com
```

※パスフレーズは入力しても画面上には何も表示されません。

# 4. リポジトリの同期

ここでは、Gitによるローカルでのバージョン管理および、GitHubを用いた共同開発のプロジェクトを立ち上げる際の手順を説明します。すでに社内で進行中のプロジェクトに参加する際は（２）から作業を進めてください。

### 4.1. GitHub上でリポジトリを新規作成

以下のリンクにアクセスして、リモートリポジトリを新規作成します。

[https://github.com/new](https://github.com/new)
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/b529e591-ce6f-5a73-73ef-9e464014a116.png)


アクセスできたら、「Repository name」、「公開設定」をそれぞれ設定します。「Repository name」には半角の文字列を設定してください。「公開設定」はリポジトリの用途に合わせて設定してください。一般向けに公開する場合は「Public」、社内作業に使用する場合は「Private」に設定してください。入力が完了したら、「Create repository」を押してください。

※「Description」は任意でリポジトリの説明（全角半角）を追加できます。

### 4.2. GitHubとGitのリポジトリを同期

リポジトリの作成が完了したら遷移する以下の画面から、「HTTPS・SSH」を「SSH」に設定して、右側に表示されたコードをコピーします。
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/e4c69a50-c206-1650-10e5-7a4a8a403240.png)


次に、ローカルリポジトリを作成します。以下のコマンドの「git@github.com:example/Project.git」を上でコピーしたSSHリンク（すでにリポジトリがある場合は、社内で指定されたSSHリンク）に書き換えて実行してください。

```bash
git clone git@github.com:example/Project.git
```

※ （必要であれば）上記のコマンドを実行すると、ローカル上にフォルダが生成されるので、フォルダを作成したい場所まで以下のコマンドで移動してください。下記のコマンドの「example/」の部分に相対パスもしくは絶対パスを入力して実行してください。

```bash
cd example/
```

# 5. ファイルの編集

### 5.1. ブランチの作成・切り替え

以下のコードの「example」を変更すれば、任意の半角文字列のブランチを作成できます。

```bash
git branch example
```

次に、作成したブランチに切り替えます。以下のコマンドの「example」を変更すれば、設定したブランチに切り替えることができます。

```bash
git checkout example
```

### 5.2. README.mdの作成

ローカルリポジトリ上に「README.md」を作成します。「README.md」はリポジトリの説明書（マニュアル）のようなものであり、リポジトリを新規作成する際は必ず作成しましょう。
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/9b2390a5-d8dc-b33d-404f-27c359999916.png)


作成したら、コマンドライン上で「README.md」をステージングエリアに追加します。

```bash
git add README.md
```

※拡張子の入力は必須です。

※コミットする対象のファイルが複数ある場合は、ずべてのファイルをステージングエリアに追加してください。

（省略可）次に、対象のファイルがステージングエリアに登録されていることを確認します。下記のコマンドを実行し、上で登録したファイルがすべて表示されていることを確認してください。

```bash
git status
```

次に、ステージングエリアに登録したファイルをコミットします。実行する際は、必ずコミットメッセージを書き換えてください。

```bash
git commit -m"README.mdの作成"
```

### 5.3 リモートリポジトリに変更を同期

以下のコマンドの「example」を上で作成したブランチの名前に書き換えて実行してください。

```bash
git push origin example
```

次にプルリクエストを作成します。Githubの「Code」画面に表示されている「Compare&pull request」をクリックします。
![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/5c4cc7bc-afc2-2ca7-1929-684c160faadf.png)

遷移した画面から「Add a description」に変更の詳細を記入して「Create pull request」をクリックします。
![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/5869f74e-70d2-5a02-69c9-6e1aaf2b0797.png)

共同編集を行っているチームメンバーに変更内容のフィードバックをもらい、確認が取れたらマージします。以下の画面の「Merge pull request」をクリックしてください。最後に遷移した画面の「Confirm merge」をクリックして完了です。

![3f7b3270-b5ea-461a-8a4e-e3532d1a9caa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760542/59fc7606-561d-9006-21ec-cbc2183bc1ff.png)

### 5.4 ローカルリポジトリの更新

自身のローカル環境での編集をリモートリポジトリへ反映した場合は、この工程は必要ありません。他者の変更を自身の環境に反映する際には、以下の手順を行ってください。

最初に、以下のコマンドを実行して、変更を反映するブランチに切り替えます。

```bash
git checkout example
```

次に、以下のコマンドを実行してリモートリポジトリの変更をローカルリポジトリに反映（プル）します。「example」はリモートリポジトリの変更を反映したブランチ名に書き換えて実行してください。

```bash
git pull origin example
```

## 付録

### 絶対に覚えてほしいコマンドリスト

下記のリストはPowerShellやコマンドプロンプトなど、他のコマンドラインでも共通で使えるものがほとんどです。

|コマンド|機能|
| --- | --- |
| cd | ディレクトリの移動 |
| mkdir | 新しいディレクトの作成 |
| dir | ファイルの一覧を表示 |

### よく使うGitBashコマンドリスト

Gitを業務で使用する際に、最低限覚えておく必要のあるコマンドリストです。

|コマンド|機能|
| --- | --- |
| git branch | ブランチの確認・作成 |
| git checkout | ブランチの切り替え |
| git add | ステージングエリアに登録 |
| git commit | ステージングエリアに登録した内容をコミット |
| git push | ローカルリポジトリの変更をリモートリポジトリに反映 |
| git pull | リモートリポジトリの変更をローカルリポジトリに反映 |

### 覚えておくと便利な機能

下記の内容を覚えて活用できるようになると、仕事の効率が上がります。

|表記・機能|動作|
| --- | --- |
| *（アスタリスク） | アスタリスクは任意の半角文字列を表します。アスタリスクを使用することで、長いファイル名を入力する手間を省けます。（使用例：cd *.c / git add file_*.txt） |
| 上下矢印キー | コマンドライン上で、過去に入力したコマンドをもう一度実行する際に、上下の矢印キーを使用することで、コマンドを遡って再度表示させることができます。 |
| git reset HEAD | ステージングエリアへの登録を取り消すコマンド |
| git git reset --soft HEAD^ | 直前のコミットをなかったことにするコマンド |
| git merge master | 移動先のブランチにマスターブランチの内容を反映（マージ）するコマンド |

## 参考文献

[イケてるレポジトリのREADME.mdには何を書くべきか - Qiita](https://qiita.com/autotaker1984/items/bce70c8c67a8f6fb1b9d)

[Git - Reference](https://git-scm.com/docs)