giboとgit configでスマートな.gitignoreを生成する
.gitignoreをプロジェクトの度手書きしていませんか?
毎度毎度 *.DS_Store や Thumbs.db をignoreファイルに含めていませんか?
地味に面倒くさいけどプロジェクトの最初だけだからまぁいいかとなりがちなgitignoreファイルをスマートに生成・管理しましょう。
gibo: git ignore boilerplate
フレームワーク固有・ディストリビューション固有のgitignoreの内容はほとんどの場合同一です。
GitHubが公開しているgitignoreのテンプレート集(github/gitignore: A collection of useful .gitignore templates)に使っているフレームワークなどがあれば、必要なテンプレートを選んでコピペすればOKです。
しかし、いちいちブラウザでこのページを開いたり、cloneするのも少し面倒です。
そんな面倒くさがりの我々のためにあるのが表題のgibo(simonwhitaker/gibo: A shell script for easily accessing gitignore boilerplates)です。
boilerplateは鋳型という意味から文例集・決まり文句というような意味がありますが、まさにgitignoreファイルの文例集といえるでしょう。
このツールはコマンドラインで利用します。
MacOS環境ではHomebrewを使って、Windows環境ではscoopやリポジトリのクローン、もしくはbatファイルから直接インストールします。
インストール方法はリポジトリを参考にしてください。
実際にgiboコマンドを叩いてみます。引数なしで実行するとusageが出力されます。
MacOS X Sierraで実行したのが以下のブロックです。
$ gibo gibo 1.0.4 by Simon Whitaker <sw@netcetera.org> https://github.com/simonwhitaker/gibo Fetches gitignore boilerplates from github.com/github/gitignore Usage: gibo [options] gibo [boilerplate boilerplate...] Example: gibo Python TextMate >> .gitignore Options: -l, --list List available boilerplates -u, --upgrade Upgrade list of available boilerplates -h, --help Display this help text -v, --version Display current script version
GitHubのテンプレート集にあるフレームワークや言語、ディストリビューションの名前を指定(複数可)すると、出力されます。
ただ、コンソールに出力してもしょうがないので出力をリダイレクトしましょう。Exampleにあるように、 >>で.gitignoreに出力します。
>が2回なのはすでに.gitignoreに何かが記入されていても上書きせずファイルの末尾に追記するためです。
詳しいことは標準出力とリダイレクトで調べてみてください。
もしどういうファイルを無視するかを確認したい場合はリダイレクトせずにそのまま出力すればいいですね。
リストを確認するときは $ gibo -l
、中身を更新するときは $ gibo -u
を実行します。
実際のプロジェクト、例えばLaravelを使う場合、 $ gibo Laravel
を実行します。
2017年8月16日現在では以下のような出力です。
### https://raw.github.com/github/gitignore/690a433b668348c33087d34fafe2155ebe8bb4cf/laravel.gitignore vendor/ node_modules/ npm-debug.log # Laravel 4 specific bootstrap/compiled.php app/storage/ # Laravel 5 & Lumen specific public/storage public/hot storage/*.key .env.*.php .env.php .env Homestead.yaml Homestead.json # Rocketeer PHP task runner and deployment package. https://github.com/rocketeers/rocketeer .rocketeer/
ここに必要があれば記述を足していきましょう。
たとえばLaravel Mixを利用する場合、吐き出したCSS・JSファイルをignoreしておくべきでしょう。
ユーザーのデフォルトで無視するファイル・ディレクトリを設定する
ついついMacやWindows、エディタの設定ファイルなどをプロジェクトのgitignoreファイルに入れてしまうかもしれませんが、プロジェクト固有のものではありませんよね。
プロジェクトの.gitignoreをあまり太らせず、ユーザーそれぞれが自分の環境に応じて無視するファイルを設定しておくほうがよいでしょう。
目安としては、$ gibo -l
を実行した際にGlobalの項に表示されるものはプロジェクトに入れるべきではないと思っています。
2018/5/10更新 章の下部に追記あり
まずは自分の環境に合わせたgitignoreファイルを作成しましょう。
例えば、MacOSユーザーでSublime Textを使っている場合とします。
~/.gitignore_global
というファイルを作成して、$ gibo macOS SublimeText >> ~/.gitignore_global
を実行します。
※区別のためにglobalをつけていますが、自分がわかるようであれば.gitignoreで構いません。
次に、Gitのユーザーレベルのconfigを編集します(参考:Git - 最初のGitの構成)。
~/.gitconfig
に以下のように記述してください。
[core] excludesfile = ~/.gitignore_global
これで自分が操作するGitリポジトリの全てで~/.gitignore_global
で記述されたファイル・ディレクトリがignoreされます。
コマンドでもconfigは操作可能ですので、manコマンドやヘルプを参考にしてください。
以下追記
まだ .gitconfig に core.excludesfile を設定しているの?
こちらの記事にあるように、上記で作成した~/.gitignore_global
を~/.config/git/config
にリネーム&移動することで~/.gitconfig
への追記が必要なくなります。
追記終わり
プロジェクトの参加メンバーが同じように設定していないと地獄をみることになるので、プロジェクト内で足並みを揃えることをお忘れなく。
Git2.7系で便利になった.gitignoreについてはこの記事をどうぞ
Git 2.7 で .gitignore が便利になっている
git archiveコマンドで差分納品ファイルをつくるにはこの記事もどうぞ
git コマンドで差分納品 zipを作る (かつ、不要ファイルは含めないようにしたい)
ではでは。
参考: