Git 初心者 プロジェクトでのブランチの利用方法

 今回が初めてのQiita投稿になります。
プログラミングを始めてまだ、半年ほどなので何かと誤った認識をしているかもしれませんが、指摘をしていただければ勉強になりますので、ご指導ご鞭撻をおねがいします！

　
第一回目の投稿は、実際に会社でチーム開発を行う上で、使っているGitのコマンドと、チーム開発でのリモートブランチからローカルブランチに反映させ、コミットするまでの流れになります。
　

Gitってなんか難しいですよね。
僕も、まだあまり慣れておりません^^;

ですが頑張ってお伝えしますので、暖かく見守ってください！

　
それでは早速流れのご説明を致します。

作業はターミナルで行います！

　
　
#### 1.現在のローカルブランチを確認
まずは、現在のローカルのブランチが何になっているかを確認するため、以下のコマンドを入力。

```
$ git branch


* ブランチ名1
  ブランチ名2
```

＊が現在のブランチになります。

　



　
#### 2.リモートブランチをプルする
リモートブランチをローカルサーバー上に同期します。

```
$ git pull -p
```

-p　はプルのオプションで、サーバー側で消されたされたリモートブランチをローカルブランチに反映させてくれます。
-pを書かなかったら、手動で消さないといけなくなります。

　

　


#### 3.リモートブランチをローカルブランチに設定
プルしたリモートブランチをローカルブランチに設定します。

```
$ git checkout 設定したいブランチ名
```

　

　　

#### 4.現在のローカルブランチを確認

```
$ git branch


  ブランチ名1
  ブランチ名2
* 先ほど設定したブランチ名
```
　


　　


#### 5.ローカルにブランチを作成
ローカルのサーバーににブランチを作成します。

```
$ git checkout -b igit checkout -b 作成するブランチ名
```

　

　

#### 6.現在のローカルブランチを確認

```
  ブランチ名1
  ブランチ名2
  ブランチ名３
* 先ほど作成したブランチ名
```
　　
　
　
#### 7.差分を表示
割愛している部分に、+ と - でコードの差分を表示する

```
$ git diff

//割愛
```

ー　消した部分
＋　追加した部分


　

　
#### 8.修正したファイルのコミット状況を確認

```
$ git status 


On branch ブランチ名
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)




        modified:   src/components/ファイルパス１


Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)




        modified:   package-lock.json
        modified:   src/modules/ファイルパス２
```

Changes to be committed: のmodifiedはcommitがされた部分
Changes not staged for commit: のmodifiedはcommitがされていない部分


　
　

　
#### 9.コミットにくっつける


```
$ git add src/components/ src/modules/


On branch insert_dummy_checkbox
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)




        modified:   src/components/ファイルパス１
        modified:   src/modules/ファイルパス２




Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)




        modified:   package-lock.json

```
※ modified:   package-lock.json  はコミットしないのでこのままでいいです。
　
　
　
　
#### 10.コミットする

```
$ git commit -m "修正の種類 : コメント"
```

・修正の種類は、事前にチームで決め、バックログなどに記録。
・コマンド入力後、コミットはプレコミット状態になります。
これは、ハスキーというプログラムがファイルのエラーがないかをチェックしています。
これが終わって初めてコミットが成功します。
問題があれば、ハスキーが何かしらを表示します。
　
　

　


#### 11.コミット内容の確認
コミットが問題なく行われているか、中身を確認します。

```
$ git show
```
　

　
　

#### 12.パッチファイルの作成
この項目に関しては、僕が初心者なのでパッチファイルを作成して、それを上司に確認してもらってからプッシュしているので、
不必要な方は、１４の項目まで飛ばしてもらって大丈夫です。

```
$ git show > ファイル名.patch
```

・> は左の内容を右に吐き出すというコマンド。
・パッチファイルとは差分が記載されているファイル。
diff(差分)だけならdiffファイルでいいのですが、ファイルの中にgitの情報なども記載されているので、パッチファイルとなり、拡張子を.patch とします。




　

#### 13.パッチファイルをローカルに反映

```
$ git apply 反映するパッチファイルのパス
```

　

　

　
#### 14.コミットをプッシュする
最後はコミットをプッシュして終わりです。

```
$ git push origin リモートブランチ名
```


　
　

---
### 用語説明



リポジトリ
ファイルやディレクトリの状態を記録する場所
保存された状態は、内容の変更履歴として格納されています。
変更履歴を管理したいディレクトリをリポジトリの管理下に置くことで、そのディレクトリ内のファイルやディレクトリの変更履歴を記録することができます。
* リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリです。
* ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリです。



　　

##### ブランチ(branch)
訳すと　木の枝、支流　という意味
履歴の流れを分岐して記録していくためのもの
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
また、分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことができます。




チームのメンバーは、他のメンバーの作業の影響を受けないように、メインのブランチから自分の作業専用のブランチを作成します。
作業の終わったメンバーは、メインのブランチに自分のブランチの変更を取り込んでいく
このようにすることで、他のメンバーの作業による影響を受けることなく、自分の作業に取り込むことができます。
また、作業単位で履歴を残すことで、問題が発生した場合に原因となる変更箇所の調査や対策を行うことが容易になります。

　

　


##### masterブランチ
リポジトリに最初のコミットを行うと、Gitはmasterという名前のブランチを作成します。
そのため、以後のコミットはブランチを切り替えるまでmasterブランチに追加されていきます。


　
　


##### マージ
マージは１機能または、１流れ毎に作成します。

　


　

##### リバート
データベースでいうロールバックみたいなもので
一度コミットされたものを破棄し、前の状態（バージョン）に戻す作業を、"リバートする" といいます。