ファイルの除外
- 除外したいファイルを「無視」
- .gitignore の設定を行う
- 拡張子で指定したり、フォルダ単位で指定できる
リポジトリ内において、ファイルを除外する設定「ignore の設定」というふうに言いますけども、この内容についてご紹介します。画面を共有します。
はい、えーとですね、ファイルの中にはその変更を検知したくない、コミットに含めたくないファイルというものがプロジェクト内においては起こる場合が、割とあります。
例えばなんですけども、その PC とかサーバー固有のデータベースの情報や、もしくはこのエディター自身の本人が使うだけのファイル群、またプログラミング的なことになりますけども、 npm でインストールさせた時のパッケージとか、 Composer でインストールした時のパッケージのように、外部からダウンロードして最新版を基本的には取り入れて、それぞれのパソコンの中で設定してから使うといったようなことのファイルですね。あとは、デザイナーさんだとしたら、プロジェクト内の重すぎるファイル、 Photoshop のファイルであるとか、そういったものがいろいろと入るのは、できることなら除外しておきたいですね。
そのたくさんファイルが変更されて、増えれば増えるほど git のリポジトリとしての容量が増えてしまうので、そこの部分は除外して、バージョン管理しないほうがいいというケースがあります。ってことで、それらを除外する方法についてご紹介します。
除外したいファイルを無視
ここでは「setting」っていうことで、なんか適当なファイルにしますが、データベースの接続情報などが書かれたファイルがセッティングファイルとしてあるとしましょう。このファイルを除外したい、変更の履歴からは管理したくない、という形で作業したいとした場合の設定の方法をお伝えします。
今、「setting」ってファイルが出来上がりましたので、SourceTreeに行きますと、当然「Uncommitted changes」として、その今新しく追加された内容が出てまいります。これをそのままコミットするのではなくて、今回は無視したり、除外したいので、右クリックから「無視」を選びます。
これで、右クリックから「無視」ですね。はい、そうすると、ここに「除外する設定をどうしますか?」というのが出てきます。
- 名前に一致するファイルを無視
- この拡張子をもつすべてを無視
- 以下すべてを無視
- カスタムパターンを無視
みたいなものが書いてありますけども、これで結構です。「名前に一致するファイルを無視」すればよろしいですね。
そして「このリポジトリのみ」か「グローバルの無視リスト」もう、このパソコン全体として無視するか?みたいな内容がありますが、基本的にはこの「リポジトリのみ」となるかと思いますね。OK を押します(※Windowsの方は図1を参照)。
はい、こうすると、今「setting」というもののファイルが出てきたのが無くなって、その代わりに見慣れない、突然「.gitignore」ファイルというのが出てきました。これが無視するリストの肝となるファイルになります。何かと言うと、この「.gitignore」ファイルの中において、今「setting」って言う内容のものが書かれているんですけども、この「.gitignore」は Git が必ず読み込むファイルで「この中に書いてある内容は全て変更を無視する」ということになります。
.gitignore の設定
では、ここ、ちょっと設定していきましょう。「.gitignore」の設定は、この「設定」の中から「高度な設定」と進んで、この中に「リポジトリ限定無視リスト」って書いてありますね(※Windowsの方は図2を参照)。「test」のリポジトリの中の「.gitignore」を編集しますよっていうふうに書いてあります。これをクリックします。こうすると、このようになってて、ここに「setting」というのがあります。
ですので、この「.gitignore」によって「setting」というファイルは無視されているから、ここ(SourceTree上)に出てこない、と言う内容になります。
試しに「g」を消すと「settin」いうファイルは無視されるって言う事になりますので、この状態で OK してみると、今、これですね。「setting」っていうファイルは除外リストの中には含まれてないファイルなので、検知されたという内容になります。分かります?
もう一回やってみましょう。設定から、高度な設定で、無視リストの編集、もう一回「setting」にすると、保存すると、こちらで選んでOKですね。こうすると、今「setting」は無視リストの中に入りましたから、変更の履歴に出てこなくなるという事になります。
このように Git のリポジトリ内において「不要なファイル、バージョン管理を行わないファイルについては「.gitignore」で除外する」ということについて覚えておいてください。
そして、その方法はいくつかありまして、例えばそうですね。「*.拡張子」…例えば「*.jpg」ってやると JPEG の画像は全て ignore される、除外されるという事になります。
また、フォルダー単位でもできて「/hoge/」ってやると「hoge」の中身は全て除外される、といったような内容になります。書き方については色々あるんで、また別途学んでいただくとしまして、ここでは「.gitignore」っていうファイルがあり、それによって除外されるんだな、ということについてご理解いただければと思います。
そして、おそらく初学な方は、ご自身で Git の ignoreファイルを書き換える事はほとんどないと思ってまして、何かしら誰かからいただいた、もしくは共有されたリポジトリを元に作業を続けるということが多いかと思います。
その時に「自分がせっかくファイルを追加しているのに、なぜか検知されない」っていう事があるかもしれません。その場合には「.gitignore」の中に、その除外するルールが書いてあって、それに合致してしまっているが故に、検知されない、と言ったような可能性があります。その場合には、その「.gitignore」を作った人、そのリポジトリを管理している先輩の方々やプログラマの方に聞いていただいて「どういう経緯なの?」とか「これが追加できないんですけど、どうしたらいいですか?」というふうに聞いていただければと思います。
まずは、この 「.gitignore」ファイルがあるよ、という事と、この「.gitignore」ファイル自身はコミットする対象である、ということについて覚えておいていただければと思います。
ここでは「.gitignore」追加いただく、でも、コミットいただく / いただかないは、どちらでも結構なんですが、「.gitignore」で除外されるな、という事についてお試しいただければと思います 。
付録 : Windowsでの表示
Windows10 / SourceTree ver.3.3.8
図1
図2