Git イラスト解説

Gitを始めて学んだ際に、全然理解できなかったので、
イメージしやすいようにだいぶゆるいイラストでまとめました。
![Git概要図.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/d968b982-9dcd-e131-0600-f3c4a73b7386.jpeg)

# 用語編 

## リポジトリ
ソースコードや変更履歴などの情報が納められた場所（データベース）のこと。
Gitのリポジトリには、リモートリポジトリとローカルリポジトリの2種類がある。
![repository.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/28648e60-bccc-414a-2538-0f43e4cc1f1c.jpeg)

### リモートリポジトリ
サーバに配置して複数人で共有するためのリポジトリ。
https://github.com/y-take?tab=repositories
![remote_repo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/b98a9637-da85-109f-a748-9a768fda200a.png)
### ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリ。
![local_repo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/8a423a8f-a3ce-0f52-2d7d-4b0571f8240a.png)

## ディレクトリ
フォルダのことです。（GUIではフォルダ、CUIではディレクトリと呼ぶ。）
### ワークツリー 
実際に作業をしているディレクトリのこと。
### インデックス
リポジトリにコミットする準備をするための場所のこと。
リポジトリ＞ディレクトリ（フォルダ）なイメージ。
![pic_70.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/6fa503ee-0395-a295-677b-246bd6484fc8.png)
http://www.startup-git.com/beginners/git-checkout-reset/
## ブランチ
履歴の流れを分岐して記録していくためのもの。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができる。
![branch.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/b3522db5-dbfc-b129-f480-2264084e2619.jpeg)
※ブランチの分け方は、プロジェクトによって異なります。
### masterブランチ
リリース可能な完全品質を保証するブランチ。
### developブランチ
開発の主軸になるブランチ。

# 操作編
![Git概要図.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/d968b982-9dcd-e131-0600-f3c4a73b7386.jpeg)



大まかな流れといては、
1.クローン または プル
　～～開発～～
2.アド
3.コミット
4.プッシュ
5.チェックアウト
6.マージ
という感じだと思います。

## clone
```
$ git clone [クローンしたいリポジトリのあるURL]
```
リモートリポジトリをローカルリポジトリにコピーすること。
作成されたローカルリポジトリは、コピー元のリモートリポジトリに紐づきます。
リモートリポジトリの内容をまるまるコピーして、別のマシンにローカルリポジトリとして作成できる。

## pull
```
$ git pull
```
リモートリポジトリからローカルリポジトリを更新すること。
リモートリポジトリから最新の変更履歴をダウンロードしてきて、自分のローカルリポジトリにその内容を取り込む。

新規作成がクローン、更新がプルというイメージです。
![clone.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/4b00a4cb-f0df-a37c-4140-4713e91a4dd8.jpeg)

## add
```
$ git add [ファイル名]
```
コミットする対象のファイルを選択すること。
ワークツリーからインデックスに変更履歴を登録すること

## commit
```
$ git commit -m "コメント"
```
ファイルやディレクトリの追加・変更を、リポジトリに記録すること。

![commit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/17c533bd-3b38-9daf-3c4f-5e4b3c8dd9b3.jpeg)


## push
```
$ git push
```
リモートリポジトリにローカルリポジトリの変更履歴をアップロードすること。

![push.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/22ba2e83-37d9-ee5a-c2b3-a99b219f85b3.jpeg)



## checkout
```
$ git checkout [ブランチ名]
```
ブランチを切り替えること。

## merge
```
$ git merge [ブランチ名]
```
ブランチに行った変更を別のブランチに統合すること。

![merge.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214243/41b71187-9805-aed1-0597-c116701fdc1a.jpeg)

## diff
```
$ git diff master
```
現在のブランチと master ブランチとの差分を確認すること。

```
$ git diff –name-only master develop
```
masterブランチと developブランチの差分のファイル名のみを表示


```
$ git diff master develop
```
masterブランチと developブランチとの差分を確認



```
$ git diff master develop sample.txt
```
masterブランチと developブランチとの同じファイル（sample.txt）の差分を確認


#### おまけ
いつも何がどこに入っているのか分からなくなるのでディレクトリ構造についてメモ。
src = source ：ソース、源、出所
dest = destination ：目的地、行先、到着地
dist = distribution ：配達、配布、分配
dist は公共に配布するための出力コードの意味が強いのに対し、dest は単なる出力コードとして使われることが多い。
ビルドシステムの生成先ならdest
dist ∈ dest

# 参考
[サルでもわかるGit入門](https://backlog.com/ja/git-tutorial/)