Git 業務フォルダ初期化スキル
業務フォルダ・運用フォルダをgitリポジトリとして初期化し、ナレッジアーティファクトだけを追跡するスキル。 Markdownドキュメント、スクリプト、設定ファイルのみを管理し、バイナリファイル(Officeドキュメント、PDF、画像、動画等)は自動的に除外する。
こんなときに使う
使うべき時:
- 業務フォルダ・運用フォルダ(製造記録、品質文書、プロジェクトアーカイブ等)のスクリプトやナレッジ文書をバージョン管理したい時
- フォルダに混在コンテンツがある — 管理したいファイルと管理したくないファイルが混在している
- ゼロサプライズのgit管理を実現したい — 意図しないファイルが絶対にコミットされない状態
- ネットワーク共有ドライブ上の「ただのファイル群」からdocs-as-codeへの移行
- 非開発者チーム向けのgit運用 — 大きなバイナリファイルを誤ってコミットする心配をなくしたい
使わない方がよい時:
- フォルダが主にコードリポジトリの場合(言語別の標準gitignoreを使用)
- バイナリファイルも追跡する必要がある場合(Git LFSを使用)
- フォルダ内の全ファイルがテキスト形式で追跡すべき場合(
git initを直接使用)
基本理念(Core Principles)
- ブロックリストよりアローリスト — 「全て無視して、意図したものだけを許可」は、予期しないコミットを構造的に防ぐ(基礎と型の追求)
- 明示的な意図 — 追跡するファイル種別は全て意識的な決断。「なんとなく」で追跡されるファイルがない(余白の設計)
- ナレッジ層の分離 — バイナリ文書は「何を」を含む。スクリプトとMarkdownは「どうやって、なぜ」を含む。後者だけがバージョン管理で価値を生む(温故知新)
- 非開発者にも安全 — 誰でも理解・維持できるシンプルなルール。知識を個人消費せず、チーム全体で活用できる仕組み(成長の複利)
アローリスト vs ブロックリスト:なぜアローリストか
ブロックリスト(従来の方法 — 脆弱)
# 問題点:
# 1. 想定していない新しいファイル種別が追跡されてしまう
# 2. 新しいバイナリ種別が追加されるたびに更新が必要
*.xlsx
*.pdf
*.png
# ... 終わりのないリスト
アローリスト(このスキルのアプローチ — 頑健)
# デフォルト: 全て無視
*
# ディレクトリの中を覗けるように
!*/
# 追跡したいものだけを明示的に許可
!*.md
!*.py
!*.ps1
# 以上。リストにないものは全て自動的に無視。
重要な洞察: アローリスト方式では、新しいファイル種別を誤って追跡することが構造的に不可能。明示的にオプトインしなければならない。バイナリファイルの種類が予測しにくい業務フォルダでは、この頑健性が特に重要。
Workflow:
Step 1: フォルダを評価する
Values: 余白の設計 — 構造にコミットする前に、意図を持って評価する。
初期化の前に以下を確認:
| 確認事項 | ガイダンス | アクション |
|---|---|---|
| 追跡したいテキスト系ファイルは何か? | アローリストのカスタマイズ参照 | アローリストに拡張子を列挙する |
| 機密ファイル(認証情報、PII(個人識別情報)はあるか? | アローリストから除外するか、.gitignoreのブロックリストセクションに追加 |
ブロックリストセクションに明示的に追加 |
| ネットワーク共有(UNC(Universal Naming Convention)パス)上か? | ネットワークドライブ設定参照 | 先にsafe.directory設定を実施 |
| リモート(GitHub等)も必要か? | このスキルはローカルgitのみ | リモート設定はgit-init-to-githubスキルを使用 |
Step 2: .gitignoreを作成する
Values: 基礎と型の追求 —
.gitignoreテンプレートは、以降のすべての作業を守るパターン。
フォルダのルートに、以下のテンプレートを使って.gitignoreを作成する。
ユースケースに合わせてアローリストをカスタマイズする(カスタマイズ参照)。
Step 3: Gitを初期化する
Values: 継続は力 — 一度正しく初期化し、一貫して維持する。
# フォルダに移動
Set-Location "path\to\your\folder"
# Gitを初期化
git init
# ユーザー情報を設定(グローバル設定がない場合)
git config user.name "氏名"
git config user.email "your@email.local"
Step 4: 初回コミット
Values: 温故知新 — 意図を明確にコミットする。将来のチームメンバーはこれをナレッジ構造の起点として読む。
# .gitignoreとナレッジファイルをステージ
git add .gitignore
git add ".github/" # スキル・エージェントがある場合
# コミット前に何が追跡されるか確認(バイナリが混ざっていないか)
git status
git add --dry-run . # 追跡されるファイルを確認
# コミット
git commit -m "chore: initialize git with knowledge-artifacts-only tracking
アローリスト方式の.gitignoreにより、Markdown、スクリプト、
設定ファイルのみを追跡。Officeドキュメント、PDF、画像等の
バイナリファイルは意図的に除外。
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>"
Step 5: 検証する
Values: ニュートラルな視点 — 客観的に、意図したファイルだけが追跡されているか確認する。
# 追跡ファイルの確認
git ls-files
# バイナリファイルが追跡されていないことを確認
git check-ignore -v some-document.xlsx # "ignored"と表示されるはず
アローリストテンプレート
このテンプレートをコピーして業務フォルダの .gitignore として使用する。
ディレクトリ指定方式のアローリストは、明示的に指定した隠しツール/設定ディレクトリ(.github/、.claude/ 等)配下のファイルのみを追跡する。それ以外のすべて(業務文書、Excelファイル、PDF、画像等)は自動的に無視される。
この設計は意図的なもの:. で始まる隠しディレクトリはWindowsエクスプローラーでデフォルト非表示のため、ツール設定のみがバージョン管理下に入る。通常のサブフォルダにある業務ファイルは一切追跡されない。
# ============================================================
# Gitアローリスト: ツール/設定ディレクトリ専用追跡
# 全て無視し、明示的に指定した隠しディレクトリ配下のみを追跡する。
# 追加のツールディレクトリを追跡したい場合は "!.yourdir/**" を追加。
# ============================================================
# デフォルト: 全て無視
*
# ディレクトリの中を覗けるように(アローリストに必須)
!*/
# ── AI / ツール設定ディレクトリ ──────────────────────────
# これらの隠しディレクトリ内のファイルのみを追跡する。
# 業務文書フォルダ(.xlsx/.pdf等)は一切追跡されない。
!.github/** # GitHub Actions、Skills、Copilot設定
!.claude/** # Claude / Anthropicエージェント設定
!.codex/** # OpenAI Codex設定
!.cursor/** # Cursor IDE設定
# ── ルートレベルの設定ファイル ─────────────────────────────
!.gitignore
!.gitattributes
アローリストのカスタマイズ
追加のツールディレクトリを追跡する場合
追跡したい隠しディレクトリを1行ずつ追加する:
# テンプレートに追加:
!.vscode/** # VS Code ワークスペース設定
!.copilot/** # GitHub Copilot設定
製造業・品質管理(IATF、ISO等)
# テンプレートをそのまま使用する。
# PDF、Excel、Word文書など業務フォルダ内のファイルは意図的に除外される。
# スキルやナレッジドキュメントは .github/skills/ や .claude/ に配置する。
ソフトウェア開発サポート
# テンプレートに追加:
!*.ts
!*.js
!*.cs # C#
!*.sql
!*.dockerfile
!Dockerfile
!*.env.example
データ分析・レポート
# テンプレートに追加:
!*.csv # CSVが小さい場合
!*.ipynb # Jupyterノートブック(出力セルには注意)
!*.r
!*.sql
テンプレートから項目を削除する場合
例えば.txtを追跡したくない場合(一時メモが多い等):
# !*.txt の行を単純に削除するだけ
# その行がなければ、.txtは自動的に無視される
ネットワークドライブ設定
UNCパス(\\server\share\folderのようなWindowsネットワーク共有)でgitを初期化する場合:
# 特定のパスを信頼するよう一度だけ設定:
git config --global --add safe.directory '%(prefix)///server/share/folder'
なぜこれが必要か: Git 2.35.2以降、ファイルのオーナーシップを検証できないディレクトリ(ネットワークドライブはオーナーシップを記録しない)には明示的な信頼設定が必要。これはセキュリティ上の保護機能であり、一度設定すれば以降は不要。
よくある落とし穴(Common Pitfalls)
| 落とし穴 | 症状 | 対処法 |
|---|---|---|
.gitignoreを作る前にgit add .を実行 |
バイナリファイルが初回コミットに含まれる。git rm --cachedでのクリーンアップが必要 |
常に.gitignoreを最初にコミットし、その後git add --dry-run .で確認 |
アローリストに!*/が欠けている |
サブディレクトリが走査されず、ルートのファイルのみ追跡される | !*.extより前に!*/を単独行で追加して走査を実装 |
!*.*でファイルを許可しようとする |
アローリストが完全に無効化され、全ファイルが追跡対象になる | !*.md、!*.pyのように拡張子を明示的に定義する |
UNCパス上でsafe.directoryを設定しない |
「unsafe repository」エラーでgitの初期化が失敗 | git initの前にgit config --global --add safe.directory '%(prefix)///server/share/folder'を実行 |
- Use
git add --dry-run .で、意図したファイルだけがステージされるか必ず確認する - Implement アローリストの
.gitignoreをgit initの前に作成する - Create
.gitignoreを最初のコミットファイルとして定義する - Avoid
git add .をdry-run確認なしに実行することを避ける - Consider ネットワークドライブでのgit initの前に
safe.directoryの設定を検討する
アンチパターン(やってはいけないこと)
| ❌ やってはいけない | ✅ 代わりにこうする | なぜ |
|---|---|---|
| ブロックリスト方式を使う | このアローリストテンプレートを使う | ブロックリストには穴がある。新しいバイナリ種別が自動追跡されてしまう |
| 大きなバイナリファイルを追跡する | 除外する。必要なら Git LFS | バイナリはリポジトリを肥大化させ、差分も意味をなさない |
dry-run確認なしにgit add .する |
git add --dry-run .で確認してから |
特に初回コミットで意図しないファイルが混入するリスクを防ぐ |
| コミット後に.gitignoreを追加する | 常に最初に.gitignoreを作成してからgit init | 後から追加するとgit rm --cachedでのクリーンアップが必要 |
!*.*で「全ファイルを許可」する |
各拡張子を明示的にリストする | !*.*はアローリストを完全に破壊する |
| パスワードや認証情報をコミットする | .envやsecrets.ymlを明示的に除外 |
アローリスト方式でも機密ファイルは手動で確認が必要 |
Quick Reference / FAQ
どのアプローチを使うべきか
| シナリオ | アプローチ | スキル |
|---|---|---|
| 混在コンテンツを持つ業務フォルダ | アローリスト方式の.gitignore | このスキル |
| 純粋なコードリポジトリ | 言語別標準gitignore | git-initial-setup |
| バイナリファイルも追跡が必要 | Git LFS + 標準.gitignore | Git LFS ドキュメント |
| ローカル設定後にGitHubに接続 | リモートリポジトリ設定 | git-init-to-github |
Q: git statusでフォルダ名が表示されるのに、中のファイルは無視されている?
A: !*/でディレクトリ自体は無視対象外になるため、フォルダ名が表示される。これは外観上のもので、git add --dry-run .を実行すると許可されたファイル種別だけが実際にステージされることが確認できる。
Q: 新しいスクリプト種別(例: .bat)を追加する必要が出た場合は?
A: .gitignoreのアローリストに!*.batを追加する。これがアローリストの仕組み — 明示的にオプトインする。
Q: 特定のバイナリファイル一つだけ例外的に追跡したい場合は?
A: !specific-file.pdfのようにファイル名を直接アローリストに追加する。ワイルドカードと完全一致ファイル名の両方が使える。
Q: 現在追跡されているファイルを確認するには?
A: git ls-filesで追跡中の全ファイルが確認できる。
Q: GitHubにも連携したい場合は?
A: セットアップ後、git-init-to-githubスキルを使ってGitHub連携を設定する。
Q: macOS/LinuxのNFS/SMB共有でも動くか?
A: .gitignoreの内容はOS非依存。safe.directoryの設定はWindows固有の対応。