100日後にエンジニアになるキミ - 58日目 - Git - Gitの使い方4

昨日までのはこちら

[100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて](https://qiita.com/otupy/items/d1765f1541a104ed6133)

[100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて](https://qiita.com/otupy/items/7af17635d576677606dc)

[100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1](https://qiita.com/otupy/items/6d1e5453f530e07b7aec)

[100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1](https://qiita.com/otupy/items/2f71d5f9c754b29d9555)

[100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1](https://qiita.com/otupy/items/61a97863f6df14171994)

[100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1](https://qiita.com/otupy/items/cd2315dcb38671cfded0)

[100日後にエンジニアになるキミ - 53日目 - Git - Gitについて](https://qiita.com/otupy/items/0abaad82a7f3fea73f1f)

最近の開発ではGitが欠かせません。
本日はGitの使い方の続きです。

昨日の講座はこちら
[100日後にエンジニアになるキミ - 57日目 - Git - Gitの使い方3](https://qiita.com/otupy/items/60076de032b6a2c5a6eb)

## 更新したくないファイルの除外(.gitignore)

ローカルに保存したパスワードや設定ファイルなど
リモート側に送りたく無いファイル群があると思います。

git管理をしたく無いファイルを`gitignore`で除外することが出来ます。

まず、ディレクトリ内で.gitignoreというファイルを作成します。

```
touch .gitignore
```

この作成したファイルは通常見ることが出来ない隠しファイルです。
作成したものを見るには

```terminal
ls -la
```
drwxr-xr-x   5 ss  staff   160  5 17 16:12 .
drwxr-xr-x+ 43 ss  staff  1376  5 16 16:53 ..
drwxr-xr-x  13 ss  staff   416  5 16 17:07 .git
-rw-r--r--   1 ss  staff     0  5 17 16:12 .gitignore
-rw-r--r--   1 ss  staff     7  5 16 16:52 sample.txt

このようにして見ることが出来ます。

このファイルにgit管理したく無いファイルを書くことで、更新対象から外すことが出来ます。

### gitignoreの書き方

**コメント**

```
# コメント部分
```

**ワイルドカード**

|記号|意味|
|:--:|:--|
|*|/以外の0文字以上の文字列にマッチ|
|?|/以外の1文字にマッチ|
|[0-9]など|/以外の指定した1文字にマッチ|
|**|0個以上のファイル or ディレクトリにマッチ|

**特定の拡張子の除外**

```
# txt ファイルの除外
*.txt
```

**特定のフォルダの中身全てを除外**

```
# abcフォルダを除外
abc/
```

**特定のパターンを除外しない**

```
# aaa.exe は更新対象にする
!/.aa/aaa.exe
```

**フォルダ内の特定拡張子を除外**

```
# paフォルダ内の .config ファイルを除外
pa/**/*.config
```

**特定フォルダを除外しつつ、その中の特定ファイルは除外しない**

```
# tmpフォルダは除外し.gitabcファイルだけは除外しない
/tmp/*
!/tmp/.gitabc
```

## ブランチのマージ(merge)

開発現場では新機能をブランチを作って開発を行い、テストが完了したらメインのmasterブランチに取り込む
という流れで開発作業を行ったりします。

このブランチに取り込む作業のことを`merge`マージといいます。

`git merge ブランチ名`

まず作業ブランチでファイルを作成してコミットしておきます。
`branch2`で作業するとします。

作業ブランチの確認をして

```
git branch
```
  branch1
* branch2
  master

新しいファイルを作ります。

```
vi sample2.txt
ls -ls
```
8 -rw-r--r--  1 ss  staff  8  5 17 16:35 sample2.txt

`branch2`でコミットします。

```
git commit -m "何かコメント書く"
```
[branch2 b4f7319] sample2
 1 file changed, 1 insertion(+)
 create mode 100644 sample2.txt

この状態でマスターに切り替えます。

```
git checkout master
```
Switched to branch 'master'

ファイルを見ても`sample2.txt`は有りません。

```
ls -ls
```
8 -rw-r--r--  1 ss  staff  7  5 16 16:52 sample.txt

`merge`コマンドで`branch2`の内容をマージします。

```
git merge branch2
```
Updating 454811b..b4f7319
Fast-forward
 sample2.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 sample2.txt


再度ファイルを確認してみると

```
ls -ls
```
8 -rw-r--r--  1 ss  staff  7  5 16 16:52 sample.txt
8 -rw-r--r--  1 ss  staff  8  5 17 16:38 sample2.txt

`branch2`のファイルが追加されていることがわかります。



## まとめ

作業ブランチの仕組みが理解出来たら実際に作業ブランチで作業してみて
メインブランチに統合したりしてみよう。

あと設定ファイルなどよく書き換えるけど都度更新しなくて
良いやつは.gitignoreなどに登録しておき
更新対象から外してみよう。


君がエンジニアになるまであと42日

## 作者の情報
乙pyのHP：
http://www.otupy.net/

Youtube：
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter：
https://twitter.com/otupython