みなさんはGitリポジトリを作成したら、きちんと.gitignore
を設定していますか?
.gitignore
を適切に設定していないと、開発中のログファイルやビルドキャッシュ、果てはクラウドサービスのキーファイルやクレデンシャルといったコミットに含めるべきではないものをうっかりコミットしてしまう事故が起きたりします。
そうならないように、また、コミット作業時に神経をすり減らさないためにも、.gitignore
を設定しておきましょう。
giboコマンドを使う
さて、.gitignore
を設定することが大事なのはわかりましたが、どんな内容を書けばいいのか考えるのも、毎回手で書くのも大変ですね。
そこで登場するのがgiboというコマンドです。
gibo
はgithub/gitignoreというGitHubが管理している.gitignore
のテンプレート集を使って.gitignore
を生成してくれるコマンドラインツールです。
似たようなツールやサービスは他にもあるのですが、gibo
が比較的有名だと思います。
macOSであればbrew install gibo
、Windowsであればscoop install gibo
などでインストールできます。
gibo
を使うと、例えばこんな風にして.gitignore
ファイルを生成できます。
gibo dump macos rust >> .gitignore
生成された.gitignoreの中身
### https://raw.github.com/github/gitignore/991e760c1c6d50fdda246e0178b9c58b06770b90/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### https://raw.github.com/github/gitignore/991e760c1c6d50fdda246e0178b9c58b06770b90/Rust.gitignore
# Generated by Cargo
# will have compiled files and executables
debug/
target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
(長いので折り畳んであります)
このように、gibo
の引数にテンプレート名(複数可)を渡してやると、それらに対応する内容を並べて出力してくれます。
自分で思っていた以上に色々な項目が入っていますね。
テンプレート集は大勢のコントリビュートによって成り立っているので、自分で考えて設定するよりも適切な設定が行えるというのもメリットです。
中には状況に応じてコメントアウトしたりコメント解除する必要のある項目が含まれていたりするので、ざっと目を通しておきましょう(上の例でいうとCargo.lock
の部分がそうですね)。
どんなテンプレートがあるのか、どのような内容なのかはgithub/gitignoreを見てください。
リポジトリを新しく作ったら、まずはgibo
で.gitignore
を生成して、それからプロジェクト固有の設定を付け足していけば良いでしょう。
おすすめの使い方
前提として.gitignore
ファイルはリポジトリにコミットして関係者全員に共有されるものなので、そのへんを踏まえて設定しましょう。
- 3大プラットフォームの設定をすべて入れておく。
- 関係者がどのOSで作業するかわからないので、
linux
,macos
,windows
は入れておいたほうがよいでしょう。1
- 関係者がどのOSで作業するかわからないので、
- 昨今のメジャー開発環境かつプロジェクトで想定されそうな著名なIDEの設定を入れておく。
- 関係者がどのようなエディタ、IDEを好むかもわからないので、プロジェクトにふさわしい環境をいくつか設定しておくとよいでしょう。
- 例えば
visualstudiocode
,jetbrains
とか。
- 個人的な設定は極力入れない。
「OS固有の設定やIDEの設定などは共有せずに自分個人で設定するべき」という意見もあります(自分もかつてはそうでした)が、最近は主要な環境の設定は最初から全部入っていたほうがいいかなと思っています。4
あまりGitに慣れていない新しいメンバーが入ってきた際にも事故率が減りますし。
以上を踏まえて、私はだいたいこんな感じで設定しています。
gibo dump linux macos windows visualstudiocode jetbrains プロジェクト固有の言語やツール... >> .gitignore
具体的にはこんな感じですね。
# KotlinでSpring Bootなど
gibo dump linux macos windows visualstudiocode jetbrains gradle kotlin >> .gitignore
# Node.jsプロジェクト
gibo dump linux macos windows visualstudiocode jetbrains node >> .gitignore
最近はプロジェクト作成時にGitリポジトリと.gitignore
も自動生成してくれることも多いですが、その場合は内容を上書きしないように注意しましょう(追記でリダイレクトしましょう)。
テンプレートの更新
gibo
は~/.gitignore-boilerplates
にgithub/gitignore
のcloneを持っていて、そこから出力しているので、時々gibo update
して最新化するとよいでしょう。
gitignore.io
gibo
と並んで有名な類似サービスとしてgitignore.ioというサービスがあります。
こちらはWebインターフェースなのですが、テンプレートの指定時にインクリメンタルに検索できるのと、github/gitignore
にはないエイリアス名でも指定できるのが特徴となっています。
例えばintellij
とかrubymine
でも出てきます(中身はjetbrains
のもの)。
またcurl
を使ってテキスト形式で取得できるようにもなっているので、gibo
の代わりに使うこともできます。
いい感じに使うための設定方法やAPIなんかのドキュメントがあるので目を通してみるとよいでしょう。
おまけ
- KotlinテンプレートはJavaテンプレートへのシンボリックリンクになっています。
-
gibo dump java kotlin
とかやると同じ内容が2回出力されてガッカリします。
-