Git＆GitHub講座

# Git & GitHub 実践ワークショップ

## 概要
大学のゼミ内でGitとGitHubを使えるようになろうと講座を企画しました．

Gitのインストールから始まり，ローカルリポジトリの作成，ファイルの編集，コミット，プッシュ，プルといった操作を体験します．
さらに，ブランチを使った共同開発の流れも実践していきます．

代表者（K君）が代表してGitHubでリモートリポジトリを作成しファイルを追加します．メンバーがそのファイルを各自編集します．

## 講座の流れ
1. **Gitの概要**
2. **Gitのインストールと設定**
3. **GitHubの設定**
4. **Gitの基本操作**
5. **ブランチを使った共同開発**


## 1. Gitの概要

### 1.1 Gitとは？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/51542e92-ea68-af97-974e-f1c31179a47a.png)

- Gitは**分散型バージョン管理システム**です
- ファイルの変更履歴をバージョンとして記録し，記録した地点へいつでも戻れる仕組みを提供します

### 1.2 基本的な仕組みと特徴
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/b99c7497-7d8d-666b-34d4-cbf7a952595e.png)

- **コミット**：ファイルの変更を任意のタイミングで記録する操作

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/faf1a8d4-a93b-96e7-e154-7ad94f9dd06a.png)

- **リポジトリ**：コミットの保管庫（ローカルとリモートがある）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/452c3001-23dc-9a9f-d56a-f0ffbeb1696b.png)

- **ワークツリー**：編集中のファイルを格納する場所
- **ステージングエリア**：コミットするファイルを一時的に保存する場所
- **Gitディレクトリ**：コミットしたファイルを格納する場所

## 2. Gitのインストールと設定

### 2.1 Gitのインストール (Windows)
1. [Gitの公式サイト](https://git-scm.com/downloads/win)からダウンロードする
2. 『Click here to download』をクリックしてダウンロード開始

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/674d89cc-5c4e-1443-bb90-0cb3711911e0.png)

3. ダウンロードしたファイルを実行してインストールする
4. 続きは[こちら](https://qiita.com/T-H9703EnAc/items/4fbe6593d42f9a844b1c)
>参考：Gitのインストール方法（Windows版）-Qiitaの記事

### 2.2 Gitの基本設定

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/5883f170-33fd-00f1-2e41-39b4a2c0f776.png" width="100">

**『Git Bash』** を起動
1. ユーザー名の設定
`git config --global user.name "Your Name"`
2. メールアドレスの設定
`git config --global user.email "your@email.com"`
3. VSCodeをデフォルトのエディターに設定
`git config --global core.editor "code --wait"` 
4. それぞれの確認
`git config --list`
:::note info
Git Bashで使えるショーットカット
・コピー　：Ctrl＋S
・ペースト：Shift＋Ins
:::

## 3. GitHubの設定

### 3.1 GitHubとは？
- Gitの仕組みを利用した，インターネット上で共同作業できるWebサービスです

### 3.2 GitHubアカウントの作成
1. [GitHub](https://github.com/)にアクセスしてアカウントを作成する
（今回の講座では予めアカウントを作成してもらっています）

### 3.3 リモートリポジトリの作成
1. GitHubのWebサイトで新しいリポジトリを作成する
（ リポジトリ名を"Git_test"とする）
2. "Create repository"クリック

## 4. Gitの基本操作
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/5883f170-33fd-00f1-2e41-39b4a2c0f776.png" width="100">

**『Git Bash』** を起動

### 4.1 ファイルの作成と編集

1. ディレクトリを移動：`cd /c/`
2. フォルダの作成　　：`mkdir Git講座`
3. ディレクトリを移動：`cd /c/Git講座/`
4. ローカルリポジトリの作成：`git init`
5. ファイルの作成　　：`touch Git_test.md`
6. Git_test.mdを編集

### 4.2 ステージングとコミット
1. ステージングエリアに登録：`git add Git_test.md` 
2. コミット　　　　　　　　：`git commit -m "コミットタイトルの記入"` 
3. コミット履歴の確認　　　：`git log` 

### 4.3 ローカルリポジトリからリモートへのプッシュ 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/32e8ecbd-961c-eda8-421f-63d5f7713bd7.png)

1. ローカルとリモートの関連付け
`git remote add origin https://github.com/ユーザー名（GitHubの名前）/リモートリポジトリ名（Git_test）.git` 
2. リモートリポジトリにプッシュ
`git push origin master` 

## 5. 共同開発

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797088/0494674d-394d-1fa1-8cae-0719d396a4b4.png)

### 5.1 リモートリポジトリのクローン
1. リモートリポジトリをクローン
`git clone https://github.com/ユーザー名（GitHubの名前）/リモートリポジトリ名（Git_test）.git` 

### 5.2 ブランチの作成・編集・マージ
ローカルリポジトリ（自分側）での操作．

1. ブランチを作成
`git checkout -b "任意の自分のブランチ名"` 
2. "Git_test.md"ファイルを編集
→登録`git add`
→コミット→`git commit`
→プッシュ`git push origin "自分のブランチ名"`

### 5.3 レビュー
1. GitHubのWebサイトで代表者（K君）がブランチの変更内容を確認する
2. 代表者（K君）が`git merge`操作でブランチを統合する
→"Git_test.md"ファイルが更新される

### 5.4 最新状態の反映
1. 参加者が`git pull origin master`を実行
→ローカル（自分のPC内）で"Git_test.md"ファイルの最新化を確認する

## まとめ
このワークショップでは，Gitの基本的な機能と，GitHub上でのチームの開発フローを理解することができると思います．

今後，ゼミ内でGitを有効活用してくれると嬉しいです．

>参考：「いちばんやさしいGit＆GitHubの教本　第2版」株式会社インプレス