Gitについて知ろう！

# はじめに

---

## 内容

- Gitって何なの？？必要なの？？
- GitとGitHubって名前似てるけど、違いって何？？
- 実際にローカルだけでGitを使ってみよう！
- Gitの〜について知りたい！！
- おすすめのGitの参考書

---

# Gitって何なの？？必要なの？？

---

## Git って何なの？？
プログラムソースなどの変更履歴を管理する
『分散型のバージョン管理システム』のこと

---

## Git って何なの？？
プログラムソースなどの変更履歴を管理する
『分散型のバージョン管理システム』のこと

→　ふむふむ。。。( ´-` )

---

### 分からない(笑)

---

### バージョン管理システムの種類

- 中央型(CVS, SVN)
- 分散型(Git)

---

### バージョン管理システムの種類

- 中央型(CVS, SVN)
- 分散型(Git)

→　中央型から分散型に変わってきた

---

#### 中央型のバージョン管理システム

<img width="600" alt="スクリーンショット 2018-06-08 2.53.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/ba88d213-8aa6-adce-96a0-3ad362562a1e.png">

---

#### 分散型のバージョン管理システム

<img width="600" alt="スクリーンショット 2018-06-08 2.58.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/3d533a1f-e4a9-3333-d6a2-b1bc7be1ed13.png">

---

#### 中央型から分散型へ

<div>
<img width="300" alt="スクリーンショット 2018-06-08 2.53.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/ba88d213-8aa6-adce-96a0-3ad362562a1e.png">
→
<img width="300" alt="スクリーンショット 2018-06-08 2.58.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/3d533a1f-e4a9-3333-d6a2-b1bc7be1ed13.png">
</div>
　

- ネットに繋がってなくても作業できる
- 他の人の作業をあまり気にしなくていい

---

### Git は『分散型バージョン管理システム』

> **メリット**
>
> - ネットに繋がってなくても作業できる
- 他の人の作業をあまり気にしなくていい

---

### 便利そうなのは分かったけど。。

---

### そもそも必要なの？？笑

---

## Git って必要なの？？

こんな感じでやっちゃえば管理できるじゃん！！

<img width="400" alt="スクリーンショット 2018-06-08 3.52.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/f355b34b-7973-278e-c732-03aa5163b7df.png">

---

## Git って必要なの？？

~~こんな感じでやっちゃえば管理できるじゃん！！~~

<img width="400" alt="スクリーンショット 2018-06-08 3.52.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/f355b34b-7973-278e-c732-03aa5163b7df.png">
　

- 人によってフォルダの名前がバラバラ
- 見落としや漏れなどのミスが多発

→　いまだに公共機関はこんな感じ（実体験）

---

## Git は必要

プログラミングでは、ちょっとしたミスが大事故に繋がってしまうこともあリます。。

Git を使って少しでもミスを減らしましょう！

---

## 他にもメリットが！？

Git は差分のみ圧縮して保存されるので、使う容量も結構少なくできます！

→　あるタイミングで`git gc --auto`というコマンドが自動的に実行されて圧縮してくれてるみたい

---

# GitとGitHubって名前似てるけど、違いって何？？

最近、とある新聞社に設計図共有サイトなんて言われてたけど違います(笑)

---

## ざっくり説明

GitHub は 世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開することができるようにした Web サービス

---

## ざっくり説明

GitHub は 世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開することができるようにした Web サービス

→　サーバーを借りたり、立てたりする手間がなくなり、他の Web サービスやアプリとも連携しやすくなり便利

---

# 実際にローカルだけで Git を使ってみよう！

---

## SourceTree でローカルリポジトリを作成

さっそく、Git でバージョン管理するもの（リポジトリ）をローカル（自分のPC上）で作成していきます！！

<div>
<img width="300" alt="スクリーンショット 2018-06-08 5.46.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/4baaa8ea-1cb3-fd8b-e1bb-c8f7ba2af4d0.png">
<img width="300" alt="スクリーンショット 2018-06-08 5.47.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/aa92a8d4-2621-da60-cf8c-b65aae196e50.png">
</div>
　

※ Git コマンド使いたい方は自由に使ってください m(- -)m

---

作成できましたが、まだ１つもコミットが無いので何も表示されませんね。

<div>
<img width="300" alt="スクリーンショット 2018-06-08 5.48.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/dd188143-7747-985e-372d-b0b07930204f.png">
<img width="300" alt="スクリーンショット 2018-06-08 5.49.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/4cea4350-9cf6-d8da-b188-263011f5a97d.png">
</div>

---

## 最初のコミットを作成

まだ何もファイルが無い状態なので適当にファイルを作成します。

<img width="882" alt="スクリーンショット 2018-06-08 5.51.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/5afd606b-3523-5732-a611-f41dec787e8c.png">

---

何でもいいですが私はターミナルで作成します(笑)

```
# プロジェクトのディレクトリに移動
$ cd [プロジェクトルート]

# 1~10000の数字が書かれたファイルを作成
$ seq 1 10000 > numbers.txt
```

ファイルが作成されました！
<img width="882" alt="スクリーンショット 2018-06-08 6.04.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/ebc3cd60-49ff-df4e-51cd-7055923db37d.png">

---

すると作業中のファイルとして、先ほど作成したファイルが出てきます(@_@)
<img width="1162" alt="スクリーンショット 2018-06-08 6.05.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/1b739971-4867-bdae-ec3f-8eb0172e5f58.png">

---

そしてステージ（今からコミットを作成するぞ〜という場所）に先ほどのファイルを移動させて、コメントを入力してコミットを作成します！
<img width="1162" alt="スクリーンショット 2018-06-08 6.07.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/bc2f1ed9-1c2d-68c6-3c7e-38102db558ad.png">

---

無事にコミットが作成されて、master ブランチが表示されました！
<img width="1162" alt="スクリーンショット 2018-06-08 6.11.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/165251/4d49089d-fd60-aee7-f457-acc6f8ebb2d7.png">

---

## 伝えたかったこと
### リモートリポジトリ(GitHub)は無くても開発できる

---

# Git の〜について知りたい！！

---

## 何か Git の操作で分からないことがあれば、自分のわかる範囲でお答えします！笑

---

## 以下のことについて少しお話

- ブランチ間違えてコミットしちゃった。。
- コミットをまとめたい。。
- ファイルの一部分だけ戻したい！！

---

## 以下のことについて少しお話

- ブランチ間違えてコミットしちゃった。。
- コミットをまとめたい。。
- ファイルの一部分だけ戻したい！！

→　資料作成しきれなかったためリアルタイム配信します！

---

## 自由時間〜

---

# おすすめの Git の参考書

---

## わかばちゃんと学ぶ Git 使い方入門

![image.png](https://qiita-image-store.s3.amazonaws.com/0/165251/3da24a0b-73bb-d2dd-95b8-b9b7987aa88b.png)

---

## 参考書ではないですが、、

---

## サルでもわかるGit入門 〜バージョン管理を使いこなそう〜

![スクリーンショット 2018-06-08 14.21.34.png](https://qiita-image-store.s3.amazonaws.com/0/165251/842731bb-9497-3b92-4e1f-8153e8d1d275.png)

https://backlog.com/ja/git-tutorial/

---

# 参考

- [ガチで5分で分かる分散型バージョン管理システムGit](http://www.atmarkit.co.jp/ait/articles/1307/05/news028_3.html)
- [git gcの自動実行はいつ行われるのか](http://blog.shibayu36.org/entry/2015/07/06/103000)
- [SVNを捨ててGitを使うべき5つの理由](https://qiita.com/YusukeHosonuma/items/14c59f3878d640a401a1)
- [Gitの驚愕の真実：1億行のファイルに1行追記するとレポジトリ容量が200MB増える[※補足あり]](http://dqn.sakusakutto.jp/2013/09/git_add_very_large_file.html)