4
0

More than 1 year has passed since last update.

giboを使っていい感じにgitignoreの設定をする

Last updated at Posted at 2021-10-04

みなさんはGitリポジトリを作成したら、きちんと.gitignoreを設定していますか?

.gitignoreを適切に設定していないと、開発中のログファイルやビルドキャッシュ、果てはクラウドサービスのキーファイルやクレデンシャルといったコミットに含めるべきではないものをうっかりコミットしてしまう事故が起きたりします。

そうならないように、また、コミット作業時に神経をすり減らさないためにも、.gitignoreを設定しておきましょう。

giboコマンドを使う

さて、.gitignoreを設定することが大事なのはわかりましたが、どんな内容を書けばいいのか考えるのも、毎回手で書くのも大変ですね。

そこで登場するのがgiboというコマンドです。

gibogithub/gitignoreというGitHubが管理している.gitignoreのテンプレート集を使って.gitignoreを生成してくれるコマンドラインツールです。
似たようなツールやサービスは他にもあるのですが、giboが比較的有名だと思います。

macOSであればbrew install gibo、Windowsであればscoop install giboなどでインストールできます。

giboを使うと、例えばこんな風にして.gitignoreファイルを生成できます。

gibo dump macos rust >> .gitignore
生成された.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
  • 昨今のメジャー開発環境かつプロジェクトで想定されそうな著名なIDEの設定を入れておく。
    • 関係者がどのようなエディタ、IDEを好むかもわからないので、プロジェクトにふさわしい環境をいくつか設定しておくとよいでしょう。
    • 例えばvisualstudiocode, jetbrainsとか。
  • 個人的な設定は極力入れない。
    • 個人的な設定はグローバルなgitignore設定2.git/info/excludeで設定しましょう。3

「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-boilerplatesgithub/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回出力されてガッカリします。
  1. ターゲットOSも作業OSも明らかに固定である場合は、ひとつでもいいでしょう。

  2. ~/.config/git/ignoreとかcore.excludesFileで指定するファイルです。

  3. ローカルリポジトリ固有の除外設定ファイルです。

  4. OSSだとまた思想や事情が異なってくるかもしれませんが、そのへんは状況に合わせて設定すればいいと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0