[Web Tool] Git Inspector — .git が重い理由と中身を調べる ブラウザ完結型 解析ツール
概要
Git Inspectorは、ブラウザの中だけで動く、.git フォルダの中身を調べるツールです。ファイルは、サーバーへ送られません。読むだけで、書き換えも、削除も、しません。
「.git が、なぜこんなに大きいのか」を、自分の目で確かめるために作りました。フォルダをドロップすると、まず 4 つの数字が出ます。その下の表で、大きいものから順に、名前と中身を見られます。ふだんの画面は、それだけで足ります。困ったときは、F1 キーを押すと、使い方が出ます。
- 開くもの:
.gitのあるフォルダ(作業フォルダ)、または.gitフォルダそのもの - 4 つの数字:
.git全体、通常(ブランチ・タグからたどれる)、reflog にだけ、どこからも到達できない。クリックで、下の表が絞られます - 大きいもの: 大きい順の一覧。名前(パス)、中身の推定、状態。クリックで、詳しい情報と、先頭のバイトが出ます
- 履歴: コミットの一覧と、コミットごとの「増えた容量」。どのコミットで重くなったかが分かります
- pack と参照: pack ごとの大きさと中身、HEAD・ブランチ・タグ・リモートの一覧
- 読むだけ: 消したり、直したりは、しません
開く
インストールは不要です。下のリンクから、そのまま開けます。
Git Inspector
lain-lab.com の .git 解析ツール。ファイルを、サーバーへ送らずに、ブラウザの中だけで読みます。
lain-lab.comスタートメニューから起動
トップページのスタートメニューからも起動できます。
スクリーンショット
大きいもの
上に 4 つの数字、下に大きい順の表が出ます。上の画面では、いちばん上の 2 行が、.git_backup という名前の中の pack ファイルです。
履歴
コミットごとの「増えた容量」が並びます。「増えた容量の大きい順」にすると、.git を重くしたコミットが、上に来ます。
名前のないものの中身
どこからも到達できないものには、名前がありません。「中身の推定」の列が、先頭のバイトから、種類を出します。
F1 ヘルプ
アプリの特徴
- ファイルは、サーバーへ送られません。書き換えもしません: 読み込みも、解析も、ブラウザの中だけで行います
- ブランチから見えないものも、数えます:
git resetで履歴から消したコミットや、コピーした.gitを、うっかりコミットした跡は、ブランチやタグからはたどれず、reflog にだけ残ります。ここを、別の数字として出します - どのコミットで重くなったか、分かります: コミットごとに、そのコミットで初めて入ったものの大きさを出します
- 名前のないものも、中身が分かります: 先頭のバイトから、PNG、zip、glTF、Rust のビルド出力など、30 種類ほどを判定します
- 検算を、取ってあります: 解析は、git 本体(
verify-pack、cat-file、rev-list)と突き合わせました。中身を読んで SHA-1 を計算し直し、名前と一致することも、確かめています - 大きな
.gitでも読めます: pack を、丸ごとは読みません。目次を読んで、必要な所だけを読みます。3.95 GiB の.gitで、読み込みは 45 秒でした(WSL の中にあるフォルダ。環境によって変わります) - ふだんの画面は、シンプル: 探すときは、
F1です
まず試す
- Git Inspectorを開きます。
.gitのあるフォルダを、画面にドロップします。.gitフォルダそのものでも、かまいません。「フォルダを選ぶ」からも開けます。- 上の 4 つの数字を見ます。「reflog にだけ」や「どこからも到達できない」が大きければ、そこをクリックします。
- 下の表の、いちばん上の行をクリックします。下に、大きさ、場所、名前、先頭のバイトが出ます。
- 「履歴」タブを開いて、「増えた容量の大きい順」を押します。どのコミットで重くなったかが分かります。
ファイルは、変更されません。
画面の見方
| 場所 | 内容 |
|---|---|
| 上のバー | 開いたフォルダの名前、読み込みにかかった時間、「別のフォルダを開く」ボタン |
| 4 つの数字 | .git 全体、通常、reflog にだけ、どこからも到達できない。それぞれ、大きさと個数 |
| タブ | 「大きいもの」「履歴」「pack」「参照」を切り替えます |
| 表 | 選んだタブの一覧 |
| 下の欄 | 選んだ行の、詳しい情報と、先頭のバイト(16 進ダンプ) |
上のバーの「読み込み」に、カーソルを少し置いたままにすると、段階ごとの秒数が出ます。
使い方
1. フォルダを開く
画面にドロップするか、「フォルダを選ぶ」で選びます。作業フォルダを開いたときは、中の .git だけを使います(node_modules などは、数えません)。
別のフォルダを調べたいときは、「別のフォルダを開く」を押します。
2. 4 つの数字
| 数字 | 意味 |
|---|---|
.git 全体 | ディスク上の大きさと、オブジェクトの個数 |
| 通常 | HEAD と、ブランチ・タグから、たどれるもの |
| reflog にだけ | 上にはなく、reflog(操作の履歴)からならたどれるもの。git reset などで履歴から消したあとに、よく残ります |
| どこからも到達できない | ブランチ・タグ・reflog の、どこからもたどれないもの。git add したあとに取り消したファイルなどが、よく残ります |
数字をクリックすると、下の表が、その種類だけに絞られます。もう一度押すと、戻ります。
3. 大きいもの
大きい順に、最大 300 件が並びます(「該当 ○○ 件」は、絞った結果の全部の数です)。
| 列 | 内容 |
|---|---|
| 大きさ | 解凍したあとの大きさ |
| ディスク上 | .git の中で、実際に占めている大きさ(圧縮・差分のあと) |
| 種類 | blob(ファイルの中身)、tree(フォルダ)、commit、tag |
| 中身の推定 | 先頭のバイトから決めた種類(例: glTF、GIF、zip、Git の pack ファイル) |
| 状態 | 通常 / reflog にだけ / 到達できない |
| 名前(パス) | tree をたどったときの、最初のパス |
| 場所 | どの pack の中にあるか(delta は差分の深さ)。ばらのファイルは「ばら」 |
| SHA | オブジェクトの SHA(先頭の 8 文字) |
上の「検索」に、名前や SHA の先頭を入れると、絞り込めます。
行をクリックすると、下の欄に、SHA、種類、大きさ、ディスク上の大きさ、場所、状態、名前、最初に入ったコミットと、先頭 96 バイトの 16 進ダンプが出ます。「履歴で見る」を押すと、そのコミットが、履歴タブで開きます。
名前が空の行
commit と tree には、名前がありません。blob でも、どこからもたどれないものは、名前が分かりません。そういうものは、「中身の推定」と、先頭のバイトが、手がかりになります。
4. 履歴
コミットの一覧です。
| 列 | 内容 |
|---|---|
| 日時 | コミットの日時(そのコミット自身のタイムゾーンで表示) |
| メッセージ | コミットメッセージの 1 行目 |
| 増えた容量(ディスク上) | そのコミットで初めて入ったものの、ディスク上の大きさの合計 |
| 新しい物 | そのコミットで初めて入ったものの個数 |
| ブランチ・タグ | そのコミットに付いている名前 |
| SHA | コミットの SHA(先頭の 8 文字) |
上のボタンで、「新しい順」と「増えた容量の大きい順」を切り替えます。検索は、メッセージ、SHA、ブランチ名で絞れます(最大 300 行まで表示)。
行をクリックすると、親、作者、状態、全文のメッセージと、そのコミットで入った大きいもの(上位 5 つ)が出ます。クリックすると、「大きいもの」の該当行へ飛びます。
ブランチやタグからはたどれず、reflog にだけ残るコミットには、メッセージの前に「reflog にだけ」の印が付きます。
5. pack
pack ごとの、大きさ、オブジェクトの個数、いちばん大きい中身の一覧です。小さな pack がたくさん積み重なっていないか、巨大な pack が 1 つだけないか、が分かります。
6. 参照
HEAD、ブランチ、タグ、リモートの一覧です。
7. 読み込みの時間
上のバーの「読み込み ○○ 秒」は、フォルダをドロップした瞬間から、表が出るまでの時間です。カーソルを置いたままにすると、段階ごとの内訳が出ます。F12 で開発者ツールの「Console」を見ても、表で出ています。
8. ショートカットキー
| キー | 動作 |
|---|---|
F1 | ヘルプを開く / 閉じる |
Esc | ヘルプを閉じる |
9. 用語
| 用語 | 意味 |
|---|---|
| オブジェクト | .git に入っている 1 つ 1 つ。blob(ファイルの中身)、tree(フォルダ)、commit、tag の 4 種類 |
| pack | たくさんのオブジェクトを、まとめて圧縮した 1 つのファイル。差分(delta)で、似たものを小さくします |
| ばらのオブジェクト | pack に入っていない、1 つが 1 ファイルのオブジェクト |
| reflog | HEAD やブランチが、どこを指していたかの、操作の履歴 |
| 到達できる | HEAD、ブランチ、タグから、たどれること |
| SHA | オブジェクトの名前(中身から計算した 40 桁の 16 進数) |
git gc | 使われなくなったオブジェクトを整理するコマンド。作ってから 2 週間(既定)は、消されません |
対応していないもの
| 内容 | 扱い |
|---|---|
ファイルの削除・整理(git gc、git prune など) | しません。読むだけです |
ステージ中(git add 済み)のファイルの判別 | できません。「どこからも到達できない」に見えます。git status で確認してください |
worktree や submodule の .git(フォルダではなく、ファイル) | 読めません。理由が出ます。本体の .git フォルダを開いてください |
| 枝分かれした履歴での、git と同じ「増えた容量」 | 同じものが 2 つの枝にあると、先に数えた方にだけ付きます。git の数え方とは、違います |
| ファイルの中身の取り出し・保存 | できません。名前が分かれば、git show で見られます |
| 枝分かれの図(履歴グラフ) | ありません。コミットの一覧だけです |
| 2 GB を超える pack、idx v1 | コードはありますが、確かめていません |
ウィンドウで開いたとき(?embed) | 確かめていません |
| スマートフォンでの動作 | 確認していません。専用の設計は、していません |
| Chrome 以外(Firefox、Safari)での動作 | 確認していません |
注意事項
- 動作の確認は、実機(Windows の Chrome)で、自分のリポジトリを開いて行いました。大きいもの、履歴、pack、参照、中身の推定、読み込みの内訳は、動くことを確認しています
- 解析の正しさは、git 本体との突き合わせで確かめました。合成したリポジトリ、chalk(1,756 個)、Spoon-Knife、小さな画面確認用のリポジトリの 4 つで、
verify-pack、cat-file、rev-list、SHA-1 の再計算が、すべて一致しました - 読み込みの時間は、環境によって変わります。自分のブログのリポジトリ(
.git3.95 GiB、26,864 個、WSL の中)で、13 分 15 秒かかっていたものを、読み方を変えて 45 秒にしました。OS のキャッシュが効いている可能性もあります - 作業フォルダごとドロップすると、フォルダを受け取る時間が、かかることがあります(自分のブログのリポジトリでは、13.1 秒でした)
- ばらのオブジェクトは、1 ファイルずつ読むため、多いと時間がかかります
- 「どこからも到達できない」ものは、
git add済みのファイルのことがあります。消す前に、必ずgit statusで確認してください。このツールは、何も消しません - 「中身の推定」は、先頭の 32 バイトだけの判定です。判定できなければ「不明」になります。大きな差分のものは、「(大きいので未読)」になります
- パスやコミットメッセージが、そのまま表示されます。画面を、スクリーンショットで公開するときは、ファイル名やメッセージに、見せたくないものが入っていないか、確かめてください
- 数万コミットを超える履歴や、shallow clone(浅い複製)は、確かめていません
- フォルダは、ご自身が、読んでよいものを、使ってください。ファイルは、こちらでは、配っていません
よくある質問 (FAQ)
Q. フォルダは、どこかに送信されますか。
A. 送信しません。読み込みも、解析も、ブラウザの中だけで行います。
Q. 開いたリポジトリが、書き換わることはありますか。
A. ありません。読むだけです。削除や整理も、しません。
Q. どのフォルダを開けばいいですか。
A..gitのある作業フォルダでも、.gitフォルダそのものでも、かまいません。.gitは隠しフォルダなので、見えないときは、作業フォルダをドロップしてください。
Q. 「.git フォルダが見つかりません」と出ます。
A. 開いたフォルダに、.gitがありません。作業フォルダか、.gitフォルダそのものを開いてください。
Q. 「.git がファイルです」と出ます。
A. worktree や submodule の.gitは、本体のフォルダを指す、小さなファイルです。本体の.gitフォルダを開いてください。
Q. 読み込みが終わりません。
A. オブジェクトが数万個ある、大きなリポジトリは、時間がかかります。読み込み中に、予想の時間が出ます。数分を超えるときは、一度リロードして、もう一度試してください。ブラウザのフォルダ選択が、node_modulesなどを数えて遅いときは、ドロップのほうが速いです。
Q. 「reflog にだけ」とは、何ですか。
A. ブランチやタグからはたどれないが、reflog には残っているものです。git resetなどで履歴から消したあとや、コピーした.gitを、うっかりコミットしたときに、よく残ります。
Q. 「どこからも到達できない」ものは、消してよいですか。
A. このツールでは、判断できません。git addしたばかりの、ステージ中のファイルも、ここに見えます。git statusで確認してから、ご自身で判断してください。git gcが、作ってから 2 週間(既定)より前のものを、整理することもあります。
Q. 名前(パス)が、空です。
A. commit と tree には、名前がありません。blob でも、どこからもたどれないものは、名前が分かりません。「中身の推定」と、先頭のバイトを見てください。
Q. 「中身の推定」が「不明」です。
A. 先頭の 32 バイトから、判定できなかったものです。3D モデルの頂点データなど、見出しのない生のデータは、判定できないことがあります。
Q. 履歴タブの「増えた容量」が、git の数字と違います。
A. 一直線の履歴では、git のrev-list --objects C --not 親と、完全に一致します。枝分かれした履歴では、同じものが 2 つの枝にあると、先に数えた方にだけ付くため、違うことがあります。
Q. 履歴に、ブランチにないコミットが出ます。
A. 「reflog にだけ」の印が付いたコミットです。git resetなどで、履歴から消したコミットで、まだ消されずに残っています。
Q. 「どのコミットで入ったか」が、出ません。
A. どこからも到達できないものは、コミットからたどれないため、出ません。
Q. 結果は、git のコマンドと同じですか。
A. 解析は、git 本体(verify-pack、cat-file、rev-list)と突き合わせて確かめています。ただし、「一致した」ことは、「正しい」ことの保証ではありません。名前(パス)は、同じ内容が複数の名前を持つとき、git と違う名前を出すことがあります。
Q. 中身を取り出して、保存できますか。
A. できません。名前が分かれば、git show 先頭の SHAで見られます。
関連
Inspector シリーズには、PDF、Office 文書、EXE・DLL、WASM、ソースコードの構文木、フォントを読むツールもあります。
[Web Tool] PE Inspector — EXE・DLL の中身を読む ブラウザ完結型 解析ツール // PROTOCOL.LAIN
lain-lab.com のPE Inspector(ブラウザ完結)の使い方ガイド。ファイルの開き方、概要・構造・文字列・関数の各タブの見方、ファイル全体の地図とエントロピー、インポート関数から IAT への位置ジャンプ、逆アセンブルの読み方、ショートカットキー、対応していないもの、うまくいかないときの対処、よくある質問を解説。ファイルは、サーバーへ送信されません。
lain-lab.com
[WEB Tool] Font Inspector v1.0 — フォントの中身をブラウザで覗くツール使い方ガイド // PROTOCOL.LAIN
HarfBuzz WASM を使ったブラウザ完結のフォント解析ツール「Font Inspector」の使い方ガイド。フォントの開き方、グリフ一覧と検索、アウトラインと制御点、OpenType feature と縦書きのシェーピング、可変フォントの軸、TrueType ヒンティング VM(fpgm / prep / cvt / グリフ命令)の見方、HEX ダンプ、よくある質問を解説。
lain-lab.com
[WEB Tool] Office Inspector v1.0 — Word / Excel / PowerPoint の中身を覗いて、残っている情報を確かめるツール使い方ガイド // PROTOCOL.LAIN
ブラウザ完結の Office ファイル内部構造ビューア「Office Inspector」の使い方ガイド。ファイルの読み込み方と 3 つのサンプル、画面の構成、7 つのタブ(FINDINGS / CONTENT / PART / ZIP / RELS / MEDIA / STATS)、hex の色分けと連動、変更履歴・非表示シート・ノートの確かめ方、XML から参照先へ飛ぶ方法、ZIP の構造体の読み方、マクロのソースの見方、パスワード付きファイルの開き方、移動・検索パレット、キーボードショートカット、対応形式と未対応のもの、よくある質問を解説。
lain-lab.com
[WEB Tool] AST Inspector v1.0 — ソースコードの構文木をブラウザで覗くツール使い方ガイド // PROTOCOL.LAIN
Tree-sitter WASM を使ったブラウザ完結の構文木ビューア「AST Inspector」の使い方ガイド。コードの入力とファイルの開き方、Tree タブの色分けとカーソル連動、ERROR / MISSING ノード、S 式タブ、Query タブとプリセット、highlights.scm によるシンタックスハイライト、インクリメンタルパースの見方(再利用 / 新規ノード、編集範囲、構造変化)、よくある質問を解説。
lain-lab.com
[WEB App] File Inspector v1 — ブラウザ完結型バイナリ解析・メタデータ抽出・拡張子偽装検知ツール // PROTOCOL.LAIN
ブラウザ完結型ファイル解析・検証ツール「File Inspector」。マジックバイト判定、拡張子不一致警告、Web Crypto API/SparkMD5ハッシュ計算、ExifReaderメタデータ解析、PNG/JPEGのEOF外隠しデータ検出、ヘキサダンプ表示。サーバーアップロード不要。
lain-lab.com技術記事
実装の詳細は、技術記事にまとめています。
[Astro] #184 ブラウザだけで動く .git 解析ツール — 重い理由と、中身を、読むだけで調べる
ブラウザの中だけで動く、.git の中身を調べるツール Git Inspector を作りました。
lain-lab.com更新履歴
| バージョン | 日付 | 内容 |
|---|---|---|
| v1.0 | 2026/10/21 | 初回公開(4 つの数字、大きいもの、中身の推定、履歴とコミットごとの増えた容量、pack、参照、読み込み時間の内訳、F1 ヘルプ) |
クレジット
.gitの読み込み(pack と idx、差分の組み立て、ばらのオブジェクト、ref と reflog、到達できるかの判定)、履歴の集計、画面は、自作です。外部のライブラリは、使っていません。解凍は、ブラウザ標準のDecompressionStreamです- 検算には、git 本体を使いました(このツールには、含まれていません)
ご自身で用意したフォルダの権利は、それぞれの権利者にあります。Git Inspectorは、個人の制作物です。