GITについて初歩的なところから勉強してみた

# (1)はじめに
最近、業務でGitを使うことになり、勉強をはじめたばっかりの初心者です。
そもそも、PULL!?PUSH!?リポジトリ!?みたいな状態だったので、初歩的なことから勉強してみましたので備忘録として残していこうと思います。
(基礎的なことしか書いてないです)

# (2)用語の説明
## リポジトリについて
リポジトリとは、フォルダ、ファイル、ソースなどを保存しておく場所のことを指す。
Gitでは以下の２種類存在する。
・リモートリポジトリ：サーバー上に配置され、ここでチームで共有する。
・ローカルリポジトリ：ユーザーそれぞれのPC上に配置されている。

Aさんと同じソースを共有しているとすると、リポジトリは、こんな感じ。
<img width="922" alt="スクリーンショット 2020-06-02 19.29.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/9402830a-ef2b-466f-db76-3687874d42bc.png">

詳細には、リポジトリについてはこのようになっている。
masterブランチ(オレンジで囲ったところ)はデフォルトでできる。
・リモートリポジトリ：デフォルトで「origin」と言う名前がつけられる。
・リモート追跡ブランチ：「リモートブランチ」とも呼ばれる。リモートリポジトリを追跡するブランチ。リモートリポジトリのブランチ名を引き継ぐ。(リモートリポジトリが、「mybranch」だったら、リモート追跡ブランチは、「origin/mybranch」となる)
<img width="461" alt="スクリーンショット 2020-06-02 22.47.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/d2fcfdf5-75d6-7b63-7ed2-edadc71835d0.png">



## ブランチについて
作業履歴を分岐して記録していくもので、他のブランチに影響されない。
この図では、masterブランチとmybranchが存在する。
<img width="461" alt="スクリーンショット 2020-06-02 22.47.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/6f8a32aa-ffeb-d448-5871-51c0138bd4e9.png">

実際にどこで使うの？と思ったので、実際にgit使っている方に聞いてみたところ、「Develop(開発用)」ブランチを作成して本番環境と分けたりするらしい。
(あと、この記事には書いてないけどコンフリクトが起きた時とか)

ブランチ関連のGitコマンドは…
・ブランチの作成(mybranchを作成する)
　```git branch mybranch```
・ブランチに入る(mybranchに入る)
　```git checkout mybranch```

　(ブランチに)入るなのに、ホテルのチェックインみたいな感じで"checkin"じゃないんだとモヤモヤしてました。
　"checkout"は、英語で、「(図書館で本を)借りる」という意味もあるようで、それからきているみたい。


# (3)リモート・ローカルリポジトリの作成方法
2パターン紹介する。
## 方法1 : リモートリポジトリを作成してクローンする(コピーみたいなイメージ)
### ①リモートリポジトリの作成
Git Hubでは、リポジトリ名とか指定するだけでできた。
<img width="947" alt="スクリーンショット 2020-06-02 21.30.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/64e919fd-9228-15d6-0141-1b80e6675fc2.png">

### ②初めてGit Hubを触る際は、SSHキーの設定が必要となる。
※SSHキーの設定は、ここを参考にしました。
https://qiita.com/shizuma/items/2b2f873a0034839e47ce

### ③ローカルリポジトリを作成したい場所に移動して、リモートリポジトリ(①)をクローン(コピー)する
```cd [ファイル]
git clone git@github.com:[ユーザー名]/[リモートリポジトリ名].git```

※赤枠のところに、```git@github.com:[ユーザー名]/[リモートリポジトリ名].git```があるので、コピーしてもOK
<img width="1216" alt="スクリーンショット 2020-06-02 23.41.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/f9fd4f16-b446-b356-fd5a-1821adce155c.png">



## 方法2 : ローカルリポジトリを作成して、pushする。
### ①リモートリポジトリの作成
方法1の①と同じ

### ②初めてGit Hubを触る際は、SSHキーの設定が必要となる。
方法1の②と同じ

### ③ローカルリポジトリを作成したい場所に移動して、ローカルリポジトリの作成
```cd [ファイル]
git init```

### ④ローカルリポジトリ(③)をリモートリポジトリ(①)にPUSH
```git add .
git commit -m "first commit"
git remote add origin git@github.com:[ユーザー名]/[リモートリポジトリ名].git
git push origin master```

# (4)pull
なんとなく分かってきたところで、pullを扱う。
リモートリポジトリからローカルリポジトリへ最新版を融合(マージ)させるイメージ。
<img width="502" alt="スクリーンショット 2020-06-02 22.25.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/c16b2544-aedb-82ba-f717-a7291c3d19e1.png">

Gitコマンドはこれだけ。
```git pull```

今回は、masterブランチのみを考える。
内部では、fetch、mergeという処理をしている。
<img width="461" alt="スクリーンショット 2020-06-02 22.46.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/760916b9-e30b-75b9-b2f6-5b89a0d7639b.png">


# (5)push
pushするときは、以下の流れで行う。
```git add .
git status
git commit -m 'message'
git push origin [ブランチ名]```

git status では、add(ステージングエリアに追加)はされたけど、commit(ローカルリポジトリに反映)されていないものを確認することができる。(ファイルが追加されたよ〜とか)

<img width="461" alt="スクリーンショット 2020-06-02 22.43.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/6d8e6ee3-5810-c8ac-f5e8-2614bb4c0bb4.png">

ちなみに、masterブランチのみを考えると
```git add .
git status
git commit -m 'message'
git push origin master```
<img width="461" alt="スクリーンショット 2020-06-02 22.45.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/1baacf26-428c-3341-1dc9-f4345cdcda37.png">


(6)まとめ
なんとなく理解した気がするのですが、やっぱり難しい…
コンフリクトの解消法とか、まだ完全に理解しきれてないので、いつかまとめようと思います。
Gitに関しては、慣れるのみなんだろうなあと思っています。