GitHubハンズオン 第5回 ～無視リスト編～

# GitHubハンズオン 第5回 ～無視リスト編～

本記事は、GitHubハンズオンの第5回の資料です！
過去の記事を読んでいることを前提としていますので、ご注意ください。


##### GitHubハンズオンシリーズ

- [GitHubハンズオン 第1回 〜個人開発編〜](https://qiita.com/segur/items/601277fbbe8cfa08678b)
- [GitHubハンズオン 第2回 〜共同開発編〜](https://qiita.com/segur/items/a3f7b9063829850391c5)
- [GitHubハンズオン 第3回 ～ブランチ運用法編～](https://qiita.com/segur/items/1dd578003da46bddc117)
- [GitHubハンズオン 第4回 ～いろいろ取り消し編～](https://qiita.com/segur/items/8ce6914af5578c5f4ce2)
- GitHubハンズオン 第5回 ～無視リスト編～ ← 本記事
- [GitHubハンズオン 第6回 ～巨大ファイル編～](https://qiita.com/segur/items/347345a489a963641306)


# リポジトリの準備

[第1回ハンズオン](https://qiita.com/segur/items/601277fbbe8cfa08678b#%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E5%90%8D%E3%82%92%E8%A8%98%E5%85%A5%E3%81%99%E3%82%8B) で作成した **GitPractice** リポジトリを今回も使います！

もし、リポジトリを削除してしまった方は、再作成をお願いします！

Forkを開き、フェッチ＆チェックアウトして、mainブランチを最新にしてください。


# 無視リスト


## 無視リストとは

作業ディレクトリに設置したいけど、Gitでは管理したくないファイルというものがあります。

たとえば、Unityプロジェクトを編集していると、いつのまにか下図の矢印をつけたフォルダーが生成されています。
（Unityをご存知なかったとしても、ツールが自動でファイルやフォルダーを生成するという現象は見たことがあると思います。）

![image32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/cdc35ceb-19a9-b3d7-5ee0-2b648b05ba12.png)

しかし、これらはツールが自動生成したファイルを保管しているフォルダーであり、Gitで管理する必要がありません。

こういった、Gitで無視したいファイル・フォルダーを登録するのが、**無視リスト**です。


## `temp.txt` を設置する

作業ディレクトリに `temp.txt` というファイルを設置します。

`Unstaged` に `temp.txt` が表示されますが、これをコミットしたくないという状況です。


![image36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/f68af764-e9e6-acfb-21fe-7fa7a71c47bf.png)


## 無視リストを作成する

`temp.txt` を右クリックして、 **Ignore > Ignore ‘temp.txt’** をクリックします。

![image29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/4742f9e7-2b69-2dcc-cb38-5602cd17d1cb.png)

すると、 **.gitignore（ギットイグノア）** というファイルが生成されます。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/55a5eae6-5087-1fc6-4944-a30bb2b26abf.png)

この `.gitignore` が、無視リストの設定ファイルです。

中身を見ると、temp.txtが登録されていることがわかります。

![image12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/6878f1cd-166f-14b9-b232-f4f6850e80f0.png)

この `.gitignore` をコミットしてください。

`temp.txt` が `Unstaged` から消えたはずです。

**`temp.txt` を `.gitignore` よりも先にコミットしないようにご注意ください。**

`.gitignore` より先にコミットしたファイルは、無理リストの対象外になってしまいます。


# フォルダー毎に無視リストを作る

フォルダーによって無視したいファイルが違うことがあります。
そんなときは、 `.gitignore` をフォルダー毎に作りましょう！


## `example.txt` を２つのフォルダーに設置する

以下の図のように、 `FolderA` と `FolderB` を作成し、その中にそれぞれ `example.txt` を設置してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/db4e91d9-85d3-d7d4-16a5-c53cc138dfed.png)

`FolderA/example.txt` は無視したくないけど、 `FolderB/example.txt` は無視したいという状況だとします。


## トップ階層の `.gitignore` に `example.txt` を追加すると、全部無視される

`.gitignore` をテキストエディターで開き、 `example.txt` という行を追加して保存してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/dcbd46b7-c844-7bc7-ad6b-59a10d7e1f04.png)

そうすると、 `FolderA` と `FolderB` の両方の `example.txt` が無視されます！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/0c8908b5-31a4-3751-260e-587bee61a61f.png)

これだと困るので、 `example.txt` の行はやっぱり削除してください。


## トップ階層の `.gitignore` に `FolderB/example.txt` を追加すると、 `FolderB` だけ無視される

今度は、 `.gitignore` に `FolderB/example.txt` という行を追加してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/35453c38-eab9-2009-49cd-e6ecb556d6b0.png)

すると、 `FolderB` だけ無視されました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/4d039598-d8ef-b499-1906-49592a0380c1.png)

ただしこれだと、将来 `FolderB` の名前が変わったときに、 `.gitignore` を編集する必要があります！

それは非常に面倒なので、この案もボツです！
やっぱり `FolderB/example.txt` の行を削除してください。


## `FolderB` の直下に `.gitignore` を設置する

`FolderB` の中に `.gitignore` というファイルを作りましょう！
`example.txt` という行を書いて保存してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/5949d446-736c-c6ff-465f-aff87655263a.png)

これでも、 `FolderB` だけ無視されました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/61206c0b-685f-f5da-d6bb-fd23b4a08af5.png)

これなら、 `FolderB` の名前が将来変わっても、 `.gitignore` を編集する必要はありませんね！

これは `gitignore` が下のフォルダーにしか影響を及ぼせない性質があるからです！

この性質を活用すると、無視リストの管理がしやすくなるので、覚えておきましょう！


# さいごに

今回はここまでです！おつかれさまでした！

次回は巨大ファイル編です！引き続きこちらも実践していただけると嬉しいです！

https://qiita.com/segur/items/347345a489a963641306

本記事作成にあたり、以下の記事を参考にさせていただきました。ありがとうございました！

- [[Git] .gitignoreの仕様詳解](https://qiita.com/anqooqie/items/110957797b3d5280c44f)