📙

【Git】チーム開発時に漏れやすいグローバルな.gitignoreのプチ解説

2020/10/04に公開

はじめに

対象

  • メンバーから「グローバルな.gitignoreなにそれおいしいの?」って聞かれた。
  • プロジェクトのリポジトリ管理者だけど、時間と気力がないので一言で済ませたい。
    「ここを見てグローバルな.gitignoreの設定をしておいて」

そんな貴方にお届けするGitプチ解説。

とにかく設定が先だ

  • お急ぎの貴方に

Windows10

  1. C:\Users\《ユーザー名》\.config\git\ignoreを作成する。
  2. C:\Users\《ユーザー名》\.config\git\ignoreWindows.gitignoreをコピペする。
  3. IDEやエディタなど自分が使用するものを以下から探す。
  4. 該当するものがあればC:\Users\《ユーザー名》\.config\git\ignoreに追記する。

Mac

  1. /Users/《ユーザー名》/.config/git/ignoreを作成する。
  2. /Users/《ユーザー名》/.config/git/ignoremacOS.gitignoreをコピペする。
  3. IDEやエディタなど自分が使用するものを以下から探す。
  4. 該当するものがあれば/Users/《ユーザー名》/.config/git/ignoreに追記する。

.gitignoreとは

  • Gitでバージョン管理しないファイルを指定するもの。
  • 指定したファイルは差分に出てこなくなる。
  • 大きく分けてプロジェクト固有の.gitignore、グローバルな.gitignoreの2種類。

プロジェクト固有の.gitignoreとは

  • 大体プロジェクト直下に.gitignoreが配置されている。サブディレクトリにも置ける。
  • ログファイル(*.log)、パッケージのインストール先(node_modules/)など、プロジェクトディレクトリ配下のファイルを除外する。

グローバルな.gitignoreとは

  • とにかく設定が先だ』で指定した.config/git/ignoreなどのこと。
    (別のファイルを指定する方法もあるが本記事では省略)
  • OS毎(.DS_Store, Thumbs.db)、IDE設定(.idea/の一部, .vscode/の一部)など、ユーザー毎の環境で生成されるファイルを除外する。

周辺の問題や論争

不要ファイルがコミットされてしまう

  • 以下のような形で具現化する事象。
    • 「.DS_Storeがコミットされてるうぅ!」肉声
    • 「グローバルな.gitignoreを設定して下さい」atプルリクエスト
  • グローバルな.gitignoreの設定を忘れてコミットしてしまうのが原因。

プロジェクト固有に設定すべきvsグローバルに設定すべき論争

  • 恐らく決着がついていない、つかない話。
    グローバルな.gitignoreを使わずに、プロジェクト固有の.gitignoreに全てを含めるべきか。
  • プロジェクト固有に設定すべき派。
    • メンバーが間違ってコミットするくらいなら含めるべき。
    • 開発環境やツール類を揃えているなら尚更。
  • グローバルに設定すべき派。
    • リポジトリにプロジェクトに関係ない変更を含めるべきじゃない。
    • 各々使いたいツールを使う自由に対する責任。

グローバルな.gitignoreの影の薄さ

  • Git初心者であれば知らないのが普通なので、最初の環境構築で教わるかもしれない。
  • プロジェクト固有に設定すべき派のチームだと、存在すら知らない人もいるかもしれない。
  • Gitの環境構築記事やチュートリアルには大体書かれてない。

おわりに

いちITエンジニアとしての意見

  • 知らなかったら教えればいい。Git - gitignore Documentationまで読み込んでる人の方が稀。
  • メンバーが対応できるならグローバルな.gitignoreに書けるものは書くべき。
    開発が円滑に進まないようであれば、理由コメント付きでプロジェクト固有の.gitignoreに書く方が無難。

参考リンク

Discussion