Gitの地味なおはなし

こんにちは!株式会社POLでエンジニアをしている牛木と申します。チームの変更があって色々とやることが増え、ドタバタが続いていますがメンバーに助けられながら走る毎日です。

今回はGitリポジトリを見ていて、ふと思ったGitを使う上での地味な小技のご紹介です。

.gitignoreの管理について

昨今はフレームワーク付属のジェネレータなどで良い感じの.gitignoreが自動でできることが多いですが、お使いの環境(OS、エディタなど)に合わせるためにルールを足すこともあると思います。そんなときにおすすめするのはgiboというツールです。

giboはGitHubのgitignoreリポジトリをボイラープレートとして利用し、良い感じに.gitignoreファイルを作れるCLIツールです。Linuxなどの*nix系OSであればインストール用のワンライナーで ~/bin ディレクトリ配下に簡単にインストールできます(MacOSXであればbrewでもインストールできます)。

インストール後は次のようなコマンドで.gitignoreファイルに設定を追加できます。

$ gibo dump macOS Vim Node >> .gitignore

上記の例だとMacOSでVimなNode環境用のgitignoreルールを.gitignoreファイルに追記してくれます。

git dumpコマンドに指定できるパラメータはgibo listでコマンドで確認でき、主要なOS、エディタ、フレームワークなどの設定が使えます。ボイラープレートを更新したい場合はgibo updateコマンドで行います。

日々変化するOS、エディタ、開発言語やフレームワークの推奨gitignoreを簡単に適用できるのでおすすめです。

中身は管理対象外にしたいディレクトリについて

ログの管理ディレクトリや秘密鍵ファイルの管理ディレクトリなど、中身のファイルはリポジトリ管理の対象外にしたいけど、ディレクトリ自体はコミットしておきたい(アプリケーション起動時や初期セットアップ時にディレクトリがなければ作る…とかしたくない)ような場合があるかと思います。

そんなときは対象のディレクトリ(例:secrets)内に.keepのようなファイルを設置し、.gitignoreに次のように定義してコミットします。

secrets
!secrets/.keep

.keepファイルのような役割をするファイル名はなんでも良いのですが、DONT_DELETEのようなファイル名にするよりもさり気なく、かつ意味が通るのでおすすめです。

環境ファイルや設定ファイルについて

ふと、git statusを叩いたときにプロジェクトのアプリケーション設定ファイルや.envファイルが変更有りで「Changes not staged for commit」の対象になっていませんか?

設定ファイルや.envファイルはついそのままリポジトリにコミットしてしまいがちですが、開発時に一時的に設定を変えると変更扱いになってしまったり、うっかり変更したままコミットしてしまったりがおこります。

設定ファイルや.envファイルはテンプレートファイルをリポジトリの管理対象とし、実際に使うファイルはリポジトリ管理対象外にすることをおすすめします。例えばapp.confという設定ファイルを使うアプリケーションであれば、app.example.confとしてコミットしておき、app.conf自体は.gitignoreにします。.envファイルの場合も.env自体は管理対象外にして.env.exampleを管理対象とします。

.gitignoreの記述は次のようになります。

app.conf
.env

リポジトリをクローンして最初の環境セットアップでテンプレートファイルからコピー&リネームしてローカル環境用に使用します。

設定ファイルをテンプレートファイルとする方法は、APIキーなどのリポジトリに残したくない重要な情報をコミットしないためにもおすすめです。

まとめ

今回はGitの小技を紹介しました。地味すぎるおはなしですがお役に立てれば幸いです。

この記事が気に入ったらサポートをしてみませんか?