GitとGit Hub 入門(2/3)

#前の記事はこちら
[GitとGit Hub 入門(1/3)](https://qiita.com/maruuuuu/items/9efce79e3f0dd8e152ee)

# Gitの基本的な操作を学ぼう

## 用語
#### ステージング
コミットに含めるファイルやディレクトリの変更内容を記録するところ

#### コミット
前回コミット時の状態とステージングに登録されたファイルやディレクトリの差分（追加・変更・削除）を、リポジトリに記録する

#### プッシュ
リモートリポジトリに対して、ローカルリポジトリでコミットした変更内容を反映する

#### プル
ローカルリポジトリに対して、リモートリポジトリに行われた変更内容を反映する

#### ブランチ
リポジトリの分岐。デフォルトではmasterブランチのみ存在するが、ソースコードを修正するときにはmasterブランチをコピーして他の修正用ブランチを作成し、修正用ブランチでの変更が完了したらmasterブランチに変更内容をマージする。こうすることで、複数人での変更作業が可能になる。

## 基本的なステップ

1. コミットするファイルを選んでステージングに追加する。
2. ステージングに登録された変更内容をコメントをつけてコミットする。
3. ローカルリポジトリにコミットされた内容をリモートリポジトリにプッシュする。


### ファイルの作成
では、実際にローカルポジトリで変更管理してみましょう。まずは、ローカルリポジトリでファイルを作成します。

```
$ touch test1
$ touch test2
$ ls -l
total 0
-rw-r--r--  1 hoge  staff  0 10 12 18:09 test1
-rw-r--r--  1 hoge  staff  0 10 12 18:09 test2
```
2ファイル作成できましたね。

### ファイルをステージングに追加
次に、`git status`というコマンドを実行してみましょう。

```bash

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test1
	test2

nothing added to commit but untracked files present (use "git add" to track)
```
Untracked files に、先ほど作成したファイルがありますね。
ちなみに、`On branch master`というのは、今はローカルリポジトリのmasterブランチで作業していますよ、ということです。

では、`test1`のファイルだけをコミットするために`git add`でステージングに追加しましょう。

```
$ git add test1
$ $ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   test1

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test2
```
test1ファイルのみがステージングに登録されました。

### ファイルのコミット
では、続いて`test1`のファイルをコミットします。

```bash

$ git commit -m "first commit"
[master (root-commit) 71380d5] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test1]
```

`git status`で確認すると、`test1`はコミットしたのでステージングからなくなりました。

```
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test2

nothing added to commit but untracked files present (use "git add" to track)
```
`git log`でコミットログが確認できます。

```
$ git log
commit 71380d52bbb6b7e0cd649748b1d75ea0b39f71eb (HEAD -> master)
Author: hoge <hoge@email.com>
Date:   Sat Oct 12 19:01:50 2019 +0900

    first commit
```

### リモートリポジトリにプッシュ
いよいよ、ローカルリポジトリにコミットした内容をリモートリポジトリにプッシュして反映させます。
次のコマンドで、originというリモートリポジトリのmasterブランチにプッシュします。

```
$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 206 bytes | 206.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/hoge/sample.git
 * [new branch]      master -> master
```
リモートリポジトリに、ローカルリポジトリの変更が反映されました。
<img width="1051" alt="sample__sample_for_remote_repository.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/5614e7f5-bac3-cf67-e02b-dc59bd1f0be7.png">

### リモートリポジトリからプル
次に、リモートリポジトリの変更内容をローカルリポジトリに反映します。

まず、リモートリポジトリのGit HubでREADMEファイルを追加しましょう。

<img width="1078" alt="maru-e_sample__sample_for_remote_repository.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/b24ed82e-fc31-ec69-a41d-2fa14358d35c.png">
<img width="1010" alt="New_File.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/b1e752a2-cc82-24cb-4f65-53831b8bf89c.png">

READMEに適当な内容を入力し、「Commit new file」ボタンをクリックします。
READMEには、マークダウンが使用できます。

<img width="1075" alt="New_File2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/7eb2c1f7-6d57-9915-e1f6-0a16b6ced56d.png">

Git HubにREADMEが追加されました。
<img width="1038" alt="New_File3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386017/c41a1331-cd78-1877-dffb-e03a4bdb302a.png">

では、リモートリポジトリの変更（READMEの追加）をローカルリポジトリ側に反映させます。
次のコマンドで、originというリモートリポジトリのmasterブランチからプルします。

```
$ git pull origin master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/hoge/sample
 * branch            master     -> FETCH_HEAD
   f733bfe..7022b44  master     -> origin/master
Updating f733bfe..7022b44
Fast-forward
 README.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 README.md
```

READMEファイルがローカルリポジトリに追加されましたね。

```
$ ls -l
-rw-r--r--  1 hoge  staff  38 10 12 22:17 README.md
-rw-r--r--  1 hoge  staff   0 10 12 19:13 test1
-rw-r--r--  1 hoge  staff   0 10 12 19:13 test2
```
#続きはこちら
[GitとGit Hub 入門(3/3)](https://qiita.com/maruuuuu/items/8d1867f1e4aad21690c6)