初心者向け　GitとGitHubについて②

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/eb124ea2-0fa2-bbe8-1ea2-c02c35b2b4b5.png)


前回はGitとGitHubの説明、リモートリポジトリの作成まで行いました。
次はローカルリポジトリの作成やコミット、リモートリポジトリへのプッシュなど一通りの流れを説明します。

- [初心者向け GitとGitHubについて①](https://qiita.com/morioka1206/items/713ffaeff8d7075ba3b4)
- [初心者向け GitとGitHubについて②](https://qiita.com/morioka1206/items/926acec8642cefa1fcc5)
- [初心者向け GitとGitHubについて③](https://qiita.com/morioka1206/items/c506f6abac128255aa32)

まずはGitの基本的な用語を押さえておきましょう。

## Gitの基本的な用語
- **コミット(commit)**
コミットとは、ファイルの追加や変更の履歴をファイルに記録すること。コミットの際にはどのような変更修正なのかをわかりやすくするためのメモを添えます。

- **プッシュ(push)**
ファイルの追加や変更をリモートリポジトリに反映するための操作のことです。

- **アッド(add)**
コミット前に変更修正したファイルを仮の保管場所に保存することです。コミット前に行います。

- **ブランチ(branch)**
ブランチとは変更履歴の流れを保存したコミットの連なりです。ブランチは分岐することができます。分岐したブランチは他のブランチの影響を受けないで、1つのアプリケーションに対して複数のメンバーが同時に修正や機能追加などを行うことができます。
分岐したブランチを大元のブランチにマージしてブランチを一つに戻すことができます。

- **プルリクエスト(pull request)**
ブランチでのコミット履歴を残すとともに、各コミットにおける変更修正にコメントをつけることができるGitHubの機能のことです。1つのブランチでの作業について、コードを確認しつつコミュニケーションが取れる掲示板のようなものです。

- **マージ(merge)**
マージは統合するという意味です。機能実装のために作成したブランチを、リモートリポジトリ上のmasterブランチに反映する作業のことをいいます。

- **プル(pull)**
リモートリポジトリの変更をローカルリポジトリに取り込む操作のことをいいます。
マージした後、リモートリポジトリのmasterブランチはマージ後の情報になっています。しかしローカルリポジトリのmasterブランチはマージ前の情報のままなので次のブランチを作成する前に情報を反映させる必要があります。

- **クローン(clone)**
リモートリポジトリを自分のPCにダウンロードすることができます。
リモートリポジトリがあるが、手元にはローカルリポジトリがない状態の場合、cloneすることで作業することができます。同じリモートリポジトリ内で共同作業を行いたい場合は権限を付与してもらう必要があります。

- **フォーク(fork)**
他の人のプロジェクトのリポジトリをコピーして、オリジナルのファイルに対する編集アクセス権がない場合でも、自分の場所に取り入れることによって編集できるようになります。



<br>

## ローカルリポジトリの作成
ローカルリポジトリを作成していきます。
**ローカルリポジトリはGitリポジトリとして初期化することで作成**できます。
Gitで管理したいアプリケーションのディレクトリに移動します。


```console
$ git init
```
`git init`コマンドを入力することでアプリケーションのディレクトリをリポジトリとして初期化します。
これでローカルリポジトリが作成できました。

## ローカルリポジトリの仕組み

Gitは3つのデータ領域でファイルの変更履歴を管理しています。

1. **作業ディレクトリ**
1. **インデックス**
1. **Gitディレクトリ**

<br>

- **作業ディレクトリ**
ローカル環境で実際に作業するファイルがある領域です。**ワークツリー**とも言います。

- **インデックス**
作業ディレクトリ上で変更されたファイルのうち、次回のコミット対象になっているファイルを記録しておく領域。**ステージングエリア**とも言います。

- **Gitディレクトリ**
リポジトリの全ての変更履歴を保存している領域です。

## ファイルをローカルリポジトリにコミットする
作業ディレクトリからインデックスへ変更修正したファイルをインデックスへ記録させます。

```console:一つのファイル
% git add ファイル名
```

コミットされていない全てのファイルを記録させるには

```console:全てのファイル
% git add -all
```
を入力します。

うまくいったかを確認するには`git status`コマンドを入力します。

```console:確認
% git status
```
次にリポジトリへコミットします。

```console:リポジトリへコミット
% git commit -m "コメント"
```

`-mオプション`をつけてどのような内容のコミットなのかを記述します。

これでファイルの変更履歴がリポジトリへ保存されてことになります。
`git logコマンド`で確認することができます。

```console:コミット確認
% git log
```

## リモートリポジトリへプッシュする
リモートリポジトリへ反映させる前には、リモートリポジトリの情報をローカルリポジトリに追加する必要があります。

[![Image from Gyazo](https://i.gyazo.com/f3b9a022fb98e1ecde083822de94bb2d.png)](https://gyazo.com/f3b9a022fb98e1ecde083822de94bb2d)

```console:ローカルリポジトリとリモートリポジトリを紐づける
% git remote add origin リポジトリのURL
```

作成したリモートリポジトリのURLを貼り付けます。

#### ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる
```console:リモートリポジトリへプッシュする
% git push origin master
```

最初はGitHubのユーザー名とパスワードを尋ねられますので入力してください。
これでGitHubへプッシュすることができました。


コミットしておけば**過去の変更履歴を確認できたり、追跡できるので、元に戻すことができる**ようになります。通常はブランチを切ってそのブランチへプッシュすることが多いと思います。


次回はGitのコマンドやブランチについてまとめていけたらなと思います。


>参考サイト
[【超入門】初心者のためのGitとGitHubの使い方](https://tech-blog.rakus.co.jp/entry/20200529/git)
[GitHub GITチートシート](https://training.github.com/downloads/ja/github-git-cheat-sheet.pdf)
[modis GitHubとは？使い方や知っておきたい知識を解説！
](https://www.modis.jp/staffing/insight/column_30/)[Gitではじめるバージョン管理 〜ローカルリポジトリでファイルを管理してみよう〜](https://www.hivelocity.co.jp/blog/34777/)