📙
【Git】チーム開発時に漏れやすいグローバルな.gitignoreのプチ解説
はじめに
対象
- メンバーから「グローバルな
.gitignore
なにそれおいしいの?」って聞かれた。 - プロジェクトのリポジトリ管理者だけど、時間と気力がないので一言で済ませたい。
「ここを見てグローバルな.gitignore
の設定をしておいて」
そんな貴方にお届けするGitプチ解説。
とにかく設定が先だ
- お急ぎの貴方に
Windows10
-
C:\Users\《ユーザー名》\.config\git\ignore
を作成する。 -
C:\Users\《ユーザー名》\.config\git\ignore
にWindows.gitignoreをコピペする。 - IDEやエディタなど自分が使用するものを以下から探す。
- 該当するものがあれば
C:\Users\《ユーザー名》\.config\git\ignore
に追記する。
Mac
-
/Users/《ユーザー名》/.config/git/ignore
を作成する。 -
/Users/《ユーザー名》/.config/git/ignore
にmacOS.gitignoreをコピペする。 - IDEやエディタなど自分が使用するものを以下から探す。
- 該当するものがあれば
/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