ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
なぜ .gitignore が効かないのか
「.gitignore に書いたのに、変更が git status に表示される」「コミット対象から外れない」という症状の 99% は同じ原因です:
.gitignore は「まだ Git に追跡されていない(untracked)ファイル」にしか効きません。
一度コミットしたファイルや git add 済のファイルは、.gitignore に追記しても無視されません。
Git の追跡状態は次の 3 つに分類されます:
| 状態 | 説明 | .gitignore の効果 |
|---|---|---|
| untracked | Git が知らないファイル | 効く(無視される) |
| tracked (committed) | 過去にコミット済 | 効かない(追跡継続) |
| tracked (staged) | git add 済 | 効かない |
原因の切り分け: git check-ignore
まずはそのファイルが どのルールにマッチしているか / そもそも追跡済か を git check-ignore で確認します:
# どのルールでマッチしているか表示(-v: verbose)
git check-ignore -v config/local.env
# 出力例:
# .gitignore:3:*.env config/local.env
# ↑ファイル ↑行 ↑ルール ↑対象
# マッチしない場合は何も表示されない → ルールが書けていない or 既に tracked
# 全候補を確認
git check-ignore -v -- *
# 追跡済か確認
git ls-files --error-unmatch config/local.env
# 0 で抜ければ tracked、エラーなら untracked
対処1: 既に追跡済ファイルを untrack する
最も多いケース。git rm --cached でインデックスから削除(ワーキングツリーのファイル自体は残る):
# 単一ファイル
git rm --cached config/local.env
# ディレクトリ単位
git rm -r --cached node_modules/
git rm -r --cached .idea/
# ワイルドカード
git rm --cached "*.log"
# コミット
git add .gitignore
git commit -m "Untrack files that should be ignored"
注意: git rm --cached はリモートで pull した他メンバーの環境からもそのファイルを削除します。.env 等の個人設定ファイルを untrack する場合は、事前にチームに周知すること。
対処2: 全ファイル untrack して再 add(リセット)
.gitignore を大幅に変更した、または「とりあえず全部 .gitignore を反映し直したい」場合の決定版:
# 1. 全ファイルをインデックスから一旦外す
git rm -r --cached .
# 2. .gitignore を効かせた状態で再追加
git add .
# 3. 差分を確認(無視対象だけが削除されているはず)
git status
# 4. コミット
git commit -m "Apply .gitignore"
これで .gitignore に新しく書いたパターンがすべて反映されます。
対処3: 書き方ミスをチェック
.gitignore の書き方には独特のルールがあります。よくある間違い:
| 書き方 | 意味 | 注意 |
|---|---|---|
*.log | 全階層の .log ファイル | OK |
/build | リポジトリ直下の build のみ | サブディレクトリの build は無視しない |
build/ | 全階層の build ディレクトリ | 末尾スラッシュ重要 |
!important.log | 除外を打ち消す | 親ディレクトリが無視されていると効かない |
# comment | コメント | 行頭のみ。行末 # は無効 |
| BOM 付き .gitignore | UTF-8 BOM があるとパース失敗 | BOM なしで保存 |
対処4: グローバル .gitignore
.DS_Store / Thumbs.db / .idea/ など 個人環境特有のファイルは、プロジェクトの .gitignore ではなくホームの ~/.gitignore_global に書くのが行儀の良い運用:
# ~/.gitignore_global を作成
cat > ~/.gitignore_global <
対処5: 一時的に変更を無視する(assume-unchanged / skip-worktree)
「tracked のままだが、ローカル変更を Git に見せたくない」ケース。config ファイルをローカルでだけ書き換えるときに便利:
# 変更を無視する(Git が「ファイル変わってない」とみなす)
git update-index --assume-unchanged config/database.yml
# 解除
git update-index --no-assume-unchanged config/database.yml
# 現在 assume-unchanged になっているファイル一覧
git ls-files -v | grep "^h "
# より強力: skip-worktree(pull で上書きもされない)
git update-index --skip-worktree config/database.yml
# 解除
git update-index --no-skip-worktree config/database.yml
注意: assume-unchanged / skip-worktree はローカル設定でリモートに伝わりません。チーム共有が必要な無視は .gitignore か .git/info/exclude を使うべき。
対処6: リポジトリローカルな無視 (.git/info/exclude)
「自分の作業環境だけ無視したい、でも .gitignore はチーム共有でいじりたくない」場合は .git/info/exclude:
# このリポジトリの自分の環境だけで無視
echo "scratch/" >> .git/info/exclude
echo "*.local" >> .git/info/exclude
# .git/ 配下なのでコミットされない
確認手順チートシート
# Step 1. そのファイルは tracked?
git ls-files | grep target.txt
# Step 2. .gitignore のどのルールに該当している?
git check-ignore -v target.txt
# Step 3. 何も該当しなければ .gitignore のパターンを見直し
cat .gitignore
# Step 4. tracked だった場合は untrack
git rm --cached target.txt
git commit -m "Untrack target.txt"
FAQ
Q: .env を間違ってコミットしてしまった
A: 履歴からも消したい場合は git filter-repo または BFG Repo-Cleaner。リモート push 済なら強制 push とシークレット失効処理が必須。
Q: サブディレクトリの .gitignore は効く?
A: 効きます。階層ごとに .gitignore を置けます。ルートのルールはサブにも継承されます。
Q: 否定ルール (!file) が効かない
A: 親ディレクトリが無視されていると子の否定は効きません。foo/ + !foo/important.txt は不可。foo/* + !foo/important.txt なら可。
関連トピック
.gitattributes— 改行コードやマージ動作の指定git clean -fdn— untracked ファイルの掃除(事前 dry-run)git stash -u— untracked ファイルも含めて stash
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 用語一覧
- エラー一覧
- git本体のインストール(Linux)
- Linuxサーバーへのgit導入とクライアントのセットアップ
- リモートリポジトリをローカルリポジトリとしてクローンする方法
- リモートとローカルのリポジトリを同期(pull)する方法
- 設定の確認
- gitユーザー名とemailの設定
- リモートリポジトリの作成
- ローカルリポジトリの作成
- 新規ファイル/ディレクトリをインデックスに登録
- インデックスの登録状態を確認
- ローカルリポジトリの変更をコミット
- コミット履歴の確認
- クライアントからリモートリポジトリの接続設定、確認、削除
- リポジトリへのプッシュ
- リモートリポジトリからクライアントへのSSHクローン
- リモートとローカルの差分表示
- バージョンの確認
- プロキシの設定
- ローカルをリモートリポジトリの状態に戻す
- ブランチの作成, 一覧表示, 切り替え
- ブランチのマージと削除
- リベース
- .gitignoreの書き方
- .gitignoreの設定が反映されない場合
- 特定のファイルをgitの管理から外す方法
- 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
- git rm [-r --cached] の取り消し
- 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
- ローカルとリモートリポジトリの有無を同期
- pushの取消し方法
- マージツールの起動方法
- Gitで「MERGING」の状態a
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?