【初心者向け】GitHub

#用語
**インデックス**
これから登録するファイルが以前とどう変わったかを登録する一時的な場所

**リポジトリ**
データなどを保存しておく場所

**リモートリポジトリ**
GitHub上のデータを保存している場所

**ローカルリポジトリ**
GitHubに送信するデータを登録しておく、自分自身のPC

**コミット**
ローカル環境にデータを登録すること

**プッシュ**
コミットされたデータをGitHubに送信、公開すること

#GitHubにデータを送信する流れ
1）あなたのPCで開発した物を、ローカルリポジトリのインデックスに追加（アッド）します。

2）あなたのPCで開発した物を、ローカルリポジトリに登録（コミット）します。

3）全て登録し終えた後、それらをGitHubに送信（プッシュ）します。

#GitHubにリポジトリーを作る（リモートリポジトリ）
GitHub上にリポジトリを作ります。
「＋New Repository」を押してください。

「Create Repository」を押します。
これでリポジトリの作成が完了です。

<img width="821" alt="スクリーンショット 2020-03-20 15.09.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/5b40473d-0deb-a5dc-66f5-40152fd741c1.png">

表示されたページのURIを使いますので、とりあえずそのことを覚えておいてください。
<img width="986" alt="スクリーンショット 2020-03-20 15.10.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/c06342cb-04f2-ae3f-fc46-686cd1dca0f7.png">

#ローカル環境にリポジトリを作る（ローカルリポジトリ）
今回はHOMEディレクトリの下に作ります。
ターミナルでコマンドを叩きます。

```
$ mkdir github
$ cd github
$ mkdir gittest
$ cd gittest
$ git init
```
githubフォルダの中にgittestフォルダを作りました。
`$ git init`でローカルリポジトリを作成。

#ファイルをローカルリポジトリにコミット
ファイルをローカルリポジトリに登録してみましょう。
適当にファイルを作り、`ホームディレクトリ/github/gittestフォルダ`に保存。

`$ git add index.php`
変更点を勝手にインデックスに追加してくれる。

インデックスにデータを追加したら、コミットします。
`$ git commit -m "コミット"`
こっ身とすることでインデックスの内容がローカルリポジトリに登録される。
この時点では、「ローカル」リポジトリなので、GitHubには反映されてません。

#GitHubにリモートリポジトリにデータをプッシュする
先ほどのURLを使います。
GitHubにリモートリポジトリを公開してみましょう。
<img width="986" alt="スクリーンショット 2020-03-20 15.10.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/5ff286e4-b612-f74c-f7e4-c696d22f7ac0.png">

まず、インデックスをGitHubに制作。
`$ git remote add origin https://github.com/あなたのUSER＿ID/git-practice.git`

そしてコミットされたデータをGitHubにプッシュ。
`$ git push origin master`

GitHubを見てこのようになっていれば登録が成功しています。
<img width="1041" alt="スクリーンショット 2020-03-20 15.56.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/93701f14-b1ee-de5a-6d68-8e7b454d96ba.png">

#ここまでのまとめ
1）ローカルリポジトリを作成する
`$ git init`

2）ローカルリポジトリにファイルの変更点を追加（インデックスに追加）
`$ git add ファイル名`

3）ローカルリポジトリにインデックスに追加したファイルを登録
`$ git commit -m "変更点などのコメント"`

4）追加したインデックス（ファイルの変更点など）をGitHubに作成
`$ git remote add origin リポジトリのURI`

5）ローカルリポジトリのファイルをGitHubのリポジトリに送信
`$ git push origin master`

#プッシュしたデータを変更、更新してみる

ファイルの内容を変更してプッシュしてみましょう。

1）変更をインデックスに追加
`$ git add index.php`

2）ファイルを登録（コミット）
`$ git commit -m "変更してみたよ"`

3）データの送信
`$ git push origin master`

ちゃんと変更されていればOK！
<img width="1041" alt="スクリーンショット 2020-03-20 17.04.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/409b1e34-a08c-a442-8262-f762e6913759.png">

#ブランチとは
**ブランチ**
一気にバージョンを上げる時などに，失敗した時用にコピーを作っておくイメージ

**マージ**
「結合する」という意味
複数に分岐させた物を繋ぐ

「ブランチを切る」と聞いたとき？？？と思いましたが、「cut」じゃなくて「カードを切る」的なイメージ？
![https___qiita-image-store.s3.amazonaws.com_0_63338_e60dea30-4fd1-c3bd-1d43-31e2b1236208.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/adc504a0-a0bf-ef58-654c-0928967920b5.png)

#ブランチを作る
`$ git branch testbranch`

これで「testbranch」という名前のブランチが作成されます。
上図で言うところの「Ver.2.0β」のイメージです。

なお，今ある（存在する）ブランチは

`$ git branch`

で確認できます。

#ブランチを移動
`$ git branch`でブランチを確認すると、
「master」と「testbranch」があります。
<img width="404" alt="スクリーンショット 2020-03-20 17.25.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/87b0a398-c090-357f-829e-fd908e9ebe73.png">

今は「master」というブランチに「*」がついています。
これは今プッシュ（GitHubにデータを送信）すると、
masterブランチに全部データが書き込まれますよという参照＆書き換え先のブランチをtestbranchに変えてみます。

$ git checkout testbranch

これで再度`$ git branch`をすると，「*」の位置がtestbranchに移っていることが確認できます。
<img width="384" alt="スクリーンショット 2020-03-20 17.32.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/aab89c6f-6824-285b-225d-28a7fe465bcf.png">

#作ったブランチにデータを送信してみる
testbranchにデータをプッシュします。
適当にファイルの中を書き換えて

1）インデックスに変更点を登録
`$ git add index.php`

2）ファイルをローカルリポジトリに登録（コミット）
`$ git commit -m "ブランチを作ってそのブランチにプッシュ"`

3）GitHubにローカルリポジトリのデータを送信（プッシュ）
`$ git push origin testbranch`
！注意！
今回は「testbranch」にデータを送信するので,
`$ git push origin testbranch`
です！

左のブランチのプルダウンから「testbranch」を選んぶと
<img width="1005" alt="スクリーンショット 2020-03-20 17.50.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/1e80fb35-deb8-fdbd-e783-f4c0857061b9.png">

さきほどプッシュしたものが反映されています。
<img width="1005" alt="スクリーンショット 2020-03-20 18.07.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/ebb08518-341d-c65e-91ca-83716e316c11.png">

#ブランチを本筋に統合する

masterブランチに、testbranchを取り込みます。

1）まずは取り込み先のブランチを選択します。
`$ git checkout master`

2）そして、materにtestbranchを結合します。
`$ git merge testbranch`

3）最後に、結合情報をGitHubに送ります（プッシュ）
`$ git push origin master`
今回は「master」ブランチにデータをプッシュするため，コマンドは「master」になっています。

では反映されているかを確認してみます。

<img width="1005" alt="スクリーンショット 2020-03-21 16.17.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453557/cbdbef8d-a3df-a265-75fc-f80057c040fa.png">

#ここまでのまとめ

1）新しいブランチを作る
`$ git branch ブランチ名`

2）今あるブランチを確認する
`$ git branch`

3）ブランチを移動する
`$ git checkout ブランチ名`

4）ブランチを結合（マージ）する
`$ git checkout`で，結合したいブランチに移動して…
`$ git merge 取り込むブランチ名`