本文へ移動
Develop Tools
← 使い方ガイドへ戻る

.gitignoreに書いたのに無視されない原因|追跡済みファイルを確認

最頻出原因は、対象Fileが.gitignore追加前からGitに追跡されていることです。Ruleを何度も書き換える前にIndex状態を確認します。

追跡済みファイルへ.gitignoreを追加しても追跡が続きgit rm cachedで外す流れ
追跡済みファイルへ.gitignoreを追加しても追跡が続きgit rm cachedで外す流れ

プロジェクト構成から.gitignoreを生成する

言語、Framework、IDE、OSを選択し、既存Ruleと独自Patternを統合した.gitignoreをBrowser内で生成できます。

.gitignore生成ツールを開く

結論:Tracked状態を先に確認し、未追跡ならPatternと配置場所を調べる

git ls-files -- pathで出力されるなら追跡済みです。未追跡ならgit check-ignore -v pathで一致したSourceとRuleを調べます。

ToolはGit Repositoryを読み取らないため、追跡状態や実際のMatchは端末で確認します。

git add -fで強制追加したFileもTrackedになるため、Ignore Ruleだけでは外れません。

原因を上から順番に切り分ける

Tracked、Rule、配置階層、後続の!、親子.gitignore、Global Rule、実ファイル名を確認します。

Windowsでは拡張子非表示により.gitignore.txtになっていないかも確認します。

確認項目確認内容判断
Trackedgit ls-files出力ありならIndex対応
Matchgit check-ignore -vSourceと行番号
Placement.gitignoreのDirectory相対基準
Negation後続の!Rule順序確認
Filename.gitignore.txtでない拡張子表示

.gitignore生成ツールでRuleを作る手順

  1. 現行RuleをToolへ読み込みます。
  2. 選択Templateと独自Ruleを確認します。
  3. 生成結果の競合警告を読みます。
  4. Repositoryへ配置します。
  5. git check-ignore -vで実判定します。

Toolの警告は基本的な競合検出です。Git互換Checkerではありません。

診断Command

git status --ignored
git ls-files -- path/to/file
git check-ignore -v --no-index path/to/file

Tracked Fileは.gitignoreへ追加しただけでは外れない

.gitignoreは意図的に追跡しないFileを対象にします。すでにIndexへ登録済みのFileはRuleを追加してもTrackedのままです。Working TreeのFileを残してIndexからだけ外す場合は、対象を限定してgit rm --cachedを使います。

git ls-files -- .env
git rm --cached .env
git status

Directoryなら-rが必要です。広範囲な「git rm -r --cached .」を最初から案内せず、まず対象Pathを明示し、git statusでStagedされた変更を確認します。

git check-ignoreで実際に一致したRuleを調べる

git check-ignore -v path/to/file
git status --ignored

git check-ignore -vは、どのIgnore Sourceの何行目にあるPatternがPathへ一致したかを表示します。Tracked Fileは通常の判定対象外なので、何も出ない場合はgit ls-filesでも追跡状態を確認します。生成ツール内の警告は簡易分析であり、このCommandの代替ではありません。

Patternの記号と記載順を確認する

Pattern意味
*Slash以外の0文字以上*.log
?Slash以外の任意の1文字file?.txt
[]Character Set / Rangefile[0-9].txt
/位置またはDirectoryを限定/dist/
**複数階層をまたぐ特別なMatch**/cache/
!直前までの除外を再Include!important.log
#行頭ではComment# Build outputs

同じ優先Levelでは最後に一致したPatternが結果を決めます。「*.log」の後に「!important.log」を置く順序には意味があるため、Alphabet順へ安易に並べ替えません。Parent Directory自体を除外すると内部を走査しないため、内側のFileだけを単純な!で戻せない場合があります。

DevelopToolsの.gitignore生成ツールでできること

機能現行ツールの仕様
テンプレートJava、Node.js、React / Next.js、Vue / Nuxt、TypeScript、Python、Django / Flask、C# / .NET、PHP / Laravel、Rust、C / C++、Ruby / Rails、Swift、Android、Unity等
ビルド・IDE・OSGradle、Maven、CMake、Terraform、Docker、VS Code、JetBrains、Visual Studio、Eclipse、Vim / Emacs、Windows、macOS、Linux
入力既存.gitignoreを1ファイル読み込み、独自Patternをテキストで追加
統合既存内容への追加または置換。完全一致するRuleを重複削除し、元の記載順を維持
警告「*」等の広すぎるRule、絶対Path、同一対象の除外・否定競合、.env・秘密鍵Rule不足
出力編集可能な結果、Rule数・重複削除数・警告、Copy、ファイル名「.gitignore」でDownload
非対応Git互換Pattern Checker、git check-ignore実行、Git操作、Nested .gitignore自動生成、公式Templateとの自動同期
処理範囲選択内容・既存ファイル・生成結果をBrowser内で処理し、外部へ送信しない

ツールはRuleのテキストを生成・統合するところまでです。git add、git rm、git commit、git pushは実行しません。生成後は対象Repositoryでgit status、git check-ignore -v、必要に応じてgit ls-filesを実行し、実際のGit判定を確認してください。

Push済みSecretは.gitignoreだけでは解決しない

.env、Password、API Key、Private KeyをCommitまたはPushした後で.gitignoreへ追加しても、過去の履歴やCloneから参照できる可能性が残ります。最初にCredentialをRevokeまたはRotateし、利用先と自動処理を更新します。

  • 漏えいしたCredentialを失効・再発行する
  • git rm --cachedで今後の追跡を止め、.gitignoreへ適切なPatternを追加する
  • 必要性を評価してHistory Rewriteを実施し、CollaboratorやForkも調整する
  • .env.example等には値を入れず、必要な変数名だけを共有する

History RewriteはCommit Hash変更、再混入、他の開発者の作業喪失等の副作用があります。「単一Commandで完全削除」と扱わず、GitHub公式手順とTeamの運用に従います。

一次資料でPatternとTemplateを確認する

Language・Frameworkの生成物はVersionで変わります。DevelopToolsの組み込みTemplateを出発点にし、GitHub公式Template Collectionと利用Frameworkの現在のDocumentationを確認してからRepositoryへ反映してください。

具体例:.envが無視されない原因を確認する

.envを.gitignoreへ追加してもgit statusに残る状況を調べます。

git ls-filesでTrackedと判明したらIndexから外し、その後git check-ignoreで.env Ruleを確認します。

  1. git status
  2. git ls-files
  3. git rm --cached
  4. git check-ignore -v
  5. 再度git status

実値を含む.envを表示・共有せず、PathだけをCommandへ渡します。

よくある質問

.gitignoreを生成するとGitへ自動反映されますか?
いいえ。Browser内でTextを生成するだけです。Repository Rootへ配置し、git statusとgit check-ignoreで確認してください。
選択内容や読み込んだ.gitignoreは外部へ送信されますか?
現行ツールはFile読込、統合、警告、Copy、DownloadをBrowser内で処理し、外部APIへ送信しません。
GitHub公式Templateと完全に同一ですか?
完全な自動同期ではありません。組み込みRuleを確認し、GitHub公式TemplateとFramework公式資料の最新版も照合してください。