【Git】時代に逆行しているのは百も承知だが、我流プロジェクト.gitignoreの管理方法を晒す
はじめに
対象
- gitignore.io以外の
.gitignore
の管理方法に興味がある方。
前提知識
よくあるやり方はgitignore.ioなどの自動生成サービスなどに必要事項を入力し、マージ済みの.gitignore
を得る方法です。
我流
改めて大前提ですが『我流』です。一般的な方法に則った方が楽だと思います。
また「これがベストプラクティスだ」などと言うつもりもないですし、プロジェクトで採用する場合には自己責任で行ってください。また既存の管理方法が確立されているなら、郷に入っては郷に従えでいきましょう。
.gitignore
ファイルを作成する
文字コードUTF-8、改行コードLFである点に注意しつつファイルを作成します。
対象のリポジトリで利用する技術を洗い出す
.gitignore
を使いそうな技術を洗い出します。
例えば、
- OS
- Windows
- IDE
- Jetbrains
- フレームワーク・ライブラリ
- Ruby
- Ruby on Rails
という具合です。OS, IDEは運用ルールによっては不要なので端折ります。
IDEの場合は.idea/
, .vscode/
をまとめて対象外にするかもここで考えます。
github/gitignore
でテンプレートを探す
今回の例だと以下の通り。
- Windows.gitignore
- JetBrains.gitignore
- Ruby.gitignore
- Rails.gitignore
プロジェクト生成時に作られるものもありますが、そのまま使わずに精査したい派です。ただそれはそれで一旦控えておく作業が増えるなど、色々面倒なので順番は多少前後することがあります。
.gitignore
に転記する
### Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
# ...略...
# Windows shortcuts
*.lnk
### JetBrains.gitignore
大きい範囲をカバーしていそうなものから順に書いていきます。.idea/
を全て除外する場合はカスタマイズ部分になるので、最も下に持ってくる運用にしています。
見出しですが#2個##
まではテンプレートに結構あるので、#3個###
以上や独自の見出しにすると見やすいと思います。私は試行錯誤の末、これに加えて空行2行を挟むスタイルに落ち着きました。
IDEで警告が出る場合はコメントアウトしています。丸ごと削除してしまうと次回以降の差分確認が大変になるのでやめた方がいいです。
:notes: [JetBrains] '.cache' pattern is defined more than once
.gitignore
見出しを追加する
プロジェクトのカスタマイズ部分はハッキリ区別しておきたいので別定義にしておきます。混ぜるな危険です。
### Project.gitignore
プロジェクト生成時に作られるものは一旦、この見出しの下にそのままコピペ。別コミットで一つずつ精査してから削除を行います。カテゴリが異なるものは#2個##
の見出しで区切ると見やすくなります。
定期的に更新する
生ファイルの内容をコピーし、.gitignore
の対象箇所に貼り付けます。
最初はコミットハッシュや日時を控えて、見出しやコミットメッセージに追記していたのですが、面倒なだけなのでやらなくていいと思います。
更新差分を確認する
この管理方法にしている最大の理由は、定期的に更新するときに対象の.gitignore
の履歴を見て、台頭してきた技術や修正が入ったポイントが一緒に把握できるからです。
例えば最近ではVitePressやVuePressがNode.gitignore
に追加されています。プルリクエスト経由でマージされたものについては、その理由も結構大事なんじゃないかと思ってます。
つまりただのプロジェクト設定の更新に留まらず、技術トレンドの観測点として使える訳です。
おわりに
最後に何個かサンプルを置いていきます。
Discussion