GitHubの使い方・基礎

<br>

## ■ はじめに
<br>
GitHub（ギットハブ）は、Gitをベースにしたバージョン管理をクラウド上で行えるプラットフォームであり、
主にソフトウェア開発プロジェクトのバージョン管理や共同作業をサポートしています。

2008年にリリースされて以来、現在は世界中の開発者や企業に利用されています。
個人開発からプロジェクトのチーム開発まで広く使われており、コードの管理、共有やレビューが簡単にできるのが特徴です。

今回は、GitHubの基礎的な使い方を、分かりやすく解説します。

## ■ 目次
<br>

1. [GitとGitHubの違い](#1-gitとgithubの違い)
2. [GitHubの基本操作](#2-githubの基本操作)
3. [リポジトリを作成する](#3-リポジトリを作成する)
4. [ファイルの追加とコミット](#4-ファイルの追加とコミット)
5. [ブランチをマージする（プルリクエストの作成）](#5-ブランチをマージするプルリクエストの作成)
6. [まとめ](#6-まとめ)

## 1. GitとGitHubの違い
<br>
まず最初に、よく混同される「Git」と「GitHub」の違いを説明します。

- **Git**: 分散型のバージョン管理システム。ローカルでコードのバージョン履歴を管理するためのツール。
- **GitHub**: Gitをベースにしたクラウドサービス。リポジトリをホスティング [^1] して、複数人での共同作業やコードの管理が行えるようにするもの。

Gitに関しては過去の記事で説明しているので詳しくは[こちら](https://qiita.com/e-tak/items/1734d1d920d46b4fe8fb)を参考にしてみてください。

上記のことから
 - Gitはローカルでの作業
 - GitHubはクラウド上での共有やチーム開発を補助するプラットフォーム

であるといえます。
この両方をうまく使いこなすことができると、コード管理をより効率的に行うことができます。

## 2. GitHubの基本操作
<br>

GitHubを使うためには、まずアカウントを作成しましょう。
公式サイト（ https://github.com ）にアクセスして、
メールアドレスやパスワードを入力するだけでアカウントが作成できます。

アカウントを作成したら、以下のステップに沿って基本的な操作を確認していきましょう。
<br>
1 . **リポジトリ（Repository）** の作成
    - コードやファイルを保存・管理する場所。母体。
    - リポジトリは、プロジェクトのファイルやフォルダーをまとめて管理するための場所です。
    - 1つのプロジェクトに対して1つのリポジトリを作成し、その中にコード、ドキュメント、設定ファイルなどを保存します。
<br>

2 . **ブランチ（Branch）** の作成
    - ブランチは、リポジトリ内での「並行して作業するための枝分かれ」です。
    - メインブランチ（通常は`main`や`master`）とは別に作業することで、開発者は他の部分に影響を与えずに新しい機能や修正を追加できます。
<br>

3 . **コミット（Commit）**
    - コミットはバージョン管理を行うため作業内容のスナップショット[^2]を保存することです。
    - 開発者は各変更を小さな単位でコミットすることで、後から特定の変更を追跡したり、
    問題が発生した場合に特定の時点までコードを戻すことができます。
<br>

4 . **プルリクエスト（Pull Request）**
    - 変更を他のメンバーにレビューしてもらい、コードに反映する仕組みです。
    - ここでの詳細は割愛しますがLGTM（`Locks Goodt To Me`）などの文化もあります。


## 3. リポジトリを作成する
<br>
まずは、GitHubでリポジトリを作成するところから始めましょう。

### 3-1. 新しいリポジトリを作成する

1. GitHubにログインし、画面右上にある「+」ボタンをクリックして「`New repository`」を選択します。
2. リポジトリ名を入力します（例：`new-repo`）。
3. **Public**（公開）か**Private**（非公開）を選択します。
4. 「`Create repository`」ボタンを押して、リポジトリを作成します。

### 3-2. リモートリポジトリをクローンする

リポジトリを作成したら、次はローカル環境にコピー（クローン）します。  
以下のコマンドを使います。

```bash
# リポジトリのクローン
git clone https://github.com/username/new-repo.git
```
上記操作でローカル環境にリポジトリがコピーされ、ローカル環境での開発作業が行えるようになります。


## 4. ファイルの追加とコミット
<br>

### 4-1. ファイルを追加する
ローカルリポジトリにファイルを追加して、その変更をGitHubに反映させる手順を見ていきましょう。

新しいファイルを作成（例：hello.txt）。
git status コマンドでファイルが追加されているか確認。
```bash
# ファイルの作成
echo "Hello, GitHub!" > hello.txt

# ステータスの確認
git status
```

### 4-2. ファイルをステージングしてコミットする

ファイルをリポジトリに追加するには、ステージング（`git add`）とコミット（`git commit`）が必要です。
```bash
# ファイルをステージングする
git add hello.txt

# コミットする
git commit -m "初めてのコミット"
```

### 4-3. リモートリポジトリにプッシュする

最後にローカルでコミットした内容をリモートのGitHubリポジトリに反映させます。
これが`プッシュ`です。
```bash
# リモートリポジトリにプッシュする
git push origin main
```

この手順で、ローカルの変更がGitHubに反映されます。

## 5. ブランチをマージする（プルリクエストの作成）
<br>

ブランチを使って開発が完了したら、そのブランチの変更をメインのブランチ（`main`）に統合する必要があります。
これが「`マージ`」です。

直接マージすることも可能ですが、通常のチーム開発ではプルリクエストを通すのが推奨されます。
そのためブランチのマージを行う前にはプルリクエストを作成し、レビュアーにコードをレビューしてもらう必要があります。

### 5-1. プルリクエストの作成
GitHubでマージを行う際、通常はまずプルリクエストを作成します。
プルリクエストを使って他の開発者に変更をレビューしてもらい、その後にマージが行われます。

GitHubのリポジトリに移動し、作業したブランチに切り替えます。
「`Compare & pull request`」ボタンをクリックしてプルリクエストを作成します。
プルリクエストのタイトルや説明を書き、レビューをリクエストします。

### 5-2. プルリクエストをマージする
レビューが完了し、問題がない場合、プルリクエストをマージすることができます。

プルリクエストのページで「`Merge pull request`」ボタンをクリック。
確認画面が表示されるので、「`Confirm merge`」をクリック。
これで、ブランチの変更がメインブランチに統合されます。

### 5-3. 不要になったブランチの削除

マージが完了したら、作業が終わったブランチを削除するのが一般的です。
GitHub上で「`Delete branch`」ボタンをクリックして不要なブランチを削除します。

## 6. まとめ
<br>
今回の解説では、GitHubの基礎的な使い方について学びました。

- **GitとGitHubの違い**
  - Gitはローカルでのバージョン管理ツール。
  - GitHubはそのGitを利用したクラウドサービス。

- **リポジトリ**
  - プロジェクトのファイルをまとめて管理する場所。
  - GitHub上で新規に作成可能。

- **ブランチ**
  - メインブランチとは別に作業を行うための枝分かれ。
  - 安全に新しい機能や修正を追加できます。

- **コミット**
  - コードの変更を保存する操作。
  - 小さな単位でコミットすることで、変更の追跡や問題が発生した際の復元が可能。

- **プルリクエストとマージ**
  - 変更内容を他のメンバーにレビューしてもらい、問題がなければメインブランチに統合。

<br>
GitHubを活用して、効率的にチーム開発を行いましょう！

[^1]:ソフトウェアのコードやファイルをクラウド上のサーバーに保存し、管理・共有できるサービスを提供すること
[^2]:ある時点でのソースコードや、ファイル、ディレクトリ、データベースファイルなどの状態を抜き出したもののこと。