author avatar
  プロダクトマネージャー
2026-8-8さくらが更新しました

概要
「Gitリポジトリのファイル消失やディスク破損」に直面していますか?本記事では、ファイルシステムチェックや専用ツールを使った診断・修復手順を詳しく解説します。データ損失を避けつつ、安全にバージョン管理環境を復元するための手動修復やセクタレベルのスキャン手法も網羅しています。今すぐトラブル解消に役立ててください。



Gitファイルが見つからない
git statusを実行した際に見慣れないエラーが出て、チームメンバーのコミットが消えていることに気づきます。以前は履歴で埋め尽くされていた.gitフォルダが、今は空になっているか、0バイトのファイルしか残っていません。これは、停電やシステムクラッシュ、ブルースクリーンなどでディスクが不整合になった後に起きがちな、開発者にとって最悪の事態です。
直ちに書き込みをすべて止めてください。影響を受けたドライブへの新規書き込みは、消失したリポジトリデータがまだ残っているブロックを上書きする おそれがあります。外付けドライブならケーブルを抜き、システムディスクならPCの電源を切ってください。
Gitエラー
単なるGitの不具合ではなく、ディスク起因の破損を示す次の兆候に注意してください:
- git logまたはgit statusが「fatal: bad object HEAD」や「error: object file .git/objects/… is empty」というエラーで失敗する。
- ブート失敗後、git fsck「error: object file is empty」「broken link」 、または 「missing blob」 を報告する。
- Windowsのエクスプローラーで.gitフォルダは表示されるが、フリーズしたり、objects/内に0バイトのファイルが表示されたりする。
- chkdskまたは(Linuxの)fsckが、リポジトリを含むボリュームのファイルシステムエラーを検出する。
このガイドは、論理的なGitの問題と物理的なディスク障害を見分けるのに役立ちます。深刻度の評価方法、低リスクな復旧コマンドの実行手順、そしてファイルシステム自体が壊れている 場合に生ファイルを復旧してGitを再構築する方法までを学べます。

Gitの破損か、ディスク破損か、あるいは両方かを見極める方法

何かを変更する前に、まず正確に診断しましょう。単なる参照の不一致に大掛かりな復旧ツールを使うのは無駄です。さらに、故障しかけのディスクで負荷の高いGitメンテナンスコマンドを実行すると、データが永久に失われるおそれがあります。
以下の表で、症状を想定原因と適切な次のアクションに照らし合わせてください:
症状推定される原因次のアクション

git fsckが「dangling object」または「missing tree」のみを報告し、ディスクチェックは通過する。

純粋なGitリポジトリの破損(参照/オブジェクトの不一致)。

クローンまたはリモートから復旧する。git gcは実行しない。

git fsckが「object file is empty」または「broken link」を表示し、かつファイルシステムチェック(chkdsk / fsck)が.gitフォルダ内のエラーを報告する。

Gitオブジェクトに影響を与えるディスク破損

ドライブの使用を中止し、読み取り専用の復旧ツールでスキャンする。

.gitフォルダが存在しない、アクセスできない、またはドライブレターが表示されない。

パーティションの喪失、フォーマット、または深刻なファイルシステム損傷

パーティションレベルの復旧ソフトウェアを使用する。

物理的な兆候:ドライブのカチカチ音、読み取りの遅さ、頻繁なI/Oエラー。

ハードウェアの故障(不良セクタ、ヘッドクラッシュ)。

直ちに電源を切る。専門のデータ復旧サービスを検討する。

リポジトリ再構築前にまず試したい安全な復旧オプション

.gitフォルダにまだアクセスでき、いくつかの破損オブジェクトが含まれている程度なら、ディスク復旧ソフトに頼る前に次の低リスク手順を試してください。これらの手動手順は、ストレージが物理的に健全で、ファイルシステムの破損が一部のファイルに限られていることを前提とします。この順に試すと、高度な復旧ツールなしでリポジトリを復旧できることがよくあります。
git fsck --full の実行画面
利点:
  • サードパーティ製ソフトウェア不要
  • 欠落オブジェクトが少ない場合は高速
  • 完全にオフラインで作業可能

欠点:

  • コマンドラインの知識が必要
  • ディスクに物理的不良セクタがある場合は失敗する
  • 誤ってオブジェクトを削除すると、データが消えるおそれあり

ステップ1 – バイト単位のバックアップを作成する
ファイルシステムに依存しないツール(Linuxのddディスクミラーリング作成 ツールなど)を使って、破損したリポジトリの完全なコピーを作成します。これで、以降の作業で状況が悪化しても元の状態を保てます。
ステップ2 – 診断用のfsckを実行する
git fsck --full
このコマンドはデータを変更せずに、欠落または空のオブジェクトを特定します。出力は記録しておいてください。クリーンなリモートから何を置き換えるかの判断に使います。
ステップ3 – 空または破損したルースオブジェクトを削除してフェッチする
空のオブジェクトファイル(0バイト)は安全に削除できます。Gitがそれらを再ダウンロードするためです。.git/objects/に移動し、サイズが0バイトのファイル(または「object file is empty」エラーで挙がったファイル)を削除します。
次に以下を実行します:
git fetch origin
Gitがリモートから欠落オブジェクトを取得します。リモートがない場合は、別の方法が必要です。
ステップ4 – 別のクローンから無傷のオブジェクトをコピーする
ローカルクローンやチームメンバーのコピーがある場合、その.git/objects/から特定のオブジェクトファイルを手動で破損したリポジトリにコピーし、同じディレクトリ構造を維持します。コピー後、エラーが減ったか確認します:
git fsck --full
破損したリポジトリに対してgit gcgit repackを実行しないでください( TortoiseGit では、これらは 「クリーンアップ」 および 「データベースのリパック」 に相当します)。これらのコマンドはオブジェクトを再編成し、まだ復旧可能なデータを失わせるおそれがあります。
ディスクに物理的な不良セクタ がある場合や、ファイルシステムが.gitディレクトリをまったく読み取れない場合、これらの手順は機能しません。その場合は、専門的な復旧ツールが必要です。

Gitリポジトリが消失した場合にRenee Undeleterのクイックパーティションスキャンが役立つケース

git fsckがオブジェクトフォルダすら見つけられない場合、ドライブがRAWとして表示される 、またはフォーマット済みとして表示されることがあります。あるいはWindowsが「ディスクを使用するにはフォーマットする必要があります」と表示する場合もあります。これはファイルシステムまたはパーティションレベルの損傷で、Gitコマンドでの修復はできません。ここでRenee Undeleter の出番です。
Windowsの「ディスクを使用するにはフォーマットする必要があります」エラーメッセージ
おすすめ 無料でデータ復旧を開始 データ復元ソフトRenee Undeleter

操作簡単 ウィザード形式で初心者も自力で復元可能。

100%安全 読み取り専用モードでデバイスをスキャンし、データをお見つけ出すだけで、データへの修正等の操作は一切ありません。

500以上種類のデータ復元対応 音楽、動画、地図、ワード、ドキュメント、PDF、メール、写真等よく利用されるファイルを復元可能。

プレビュー機能付き スキャン中もプレビュー可能、目標データが出たら、スキャンを中止でき、高速に復元可能。

多OS支持Windows 11, 10,8.1,8,7,Vista,XP,2000及びMac OS X10.6,10.7,10.8

操作簡単 ウィザード形式で初心者も自力で復元可能。

100%安全 読み取り専用モード復元、データへの修正等の操作...

500以上種類のデータ復元対応 音楽、動画、メール、写真等復...

無料体験無料体験無料体験 122653名のユーザー様に体験をしていただきました!
- 400以上のファイル形式を復旧可能 :ファイルシステムが読み取れない場合でも、シグネチャスキャンで見つけ出します。
- パーティションの完全スキャン :フォーマット済み、アクセス不可、または破損したパーティション(ディスクの管理には表示されるもの)からデータを復旧できます。
- ディスクの完全スキャン :失われたパーティション情報を再構築し、すべてのセクタをスキャンします。パーティションが完全に消失している場合に最適です。
- 読み取り専用モード で動作するため、破損したドライブに書き込むことはなく、さらなるリスクを回避できます。
Renee Undeleterが「できないこと」を理解しておくことも重要です。このソフトはGitの内部データベースを直接修復するものではありません。代わりに、.gitフォルダ、packファイル、ソースコード、設定ファイルなどの生ファイルを復旧し、後でGit自身のツールを使って履歴を検証・再構築できるようにします。

復旧プロセスにおけるRenee Undeleterの役割

Renee Undeleterでパーティションの完全スキャンを選択
表示される状況に基づいてスキャンモードを選択してください:
1. パーティションにドライブレターが残っているが、読み取り不能、破損、またはフォーマットされている場合は、まず パーティションの完全スキャン を開始します。このモードは既存のファイルシステムをスキャンし、失われたデータを徹底的に検索します。
2. ドライブにパーティションが全くない(ディスクの管理で「未割り当て」と表示される)か、完全にRAWとして表示される場合は、 ディスクの完全スキャン を使用します。これは物理ディスクを完全にスキャンし、パーティションを再構築して、見つかった各パーティションからファイルを取得します。
どちらの場合も、復旧されたアイテムをプレビューし、安全な場所に保存することができます。決して元のディスクには保存しないでください。

Renee Undeleterで破損したGitリポジトリを復旧し、履歴をつなぎ直す方法

以下にステップバイステップのワークフローを示します。まず物理データを保護し、次にRenee Undeleterを使ってリポジトリファイルを抽出し、最後に動作するGitフォルダを再構築します。

1. ドライブの使用を中止し、安全な環境を整える

影響を受けたPCの電源を切ります。破損ディスクをUSB-SATA変換アダプタ経由か内部増設で、正常なPCにセカンダリドライブとして接続します。これにより、正常なシステムが破損ボリュームへ新たなデータを書き込むのを防げます。
データ復旧を高速化するためのUSB 3.0対応SATA外付けケース

2. Renee Undeleterをインストールし、スキャンモードを選択する

重要:ソフトウェアは、問題のディスクではなく、正常な別ドライブにインストールしてください。
Renee Undeleterを起動します。メインインターフェースで、状況に合ったスキャンモードを選択します:
- パーティションの完全スキャン – パーティションは表示されるが、破損またはフォーマットされている場合。
Renee Undeleterでパーティションの完全スキャンを選択
- ディスクの完全スキャン – パーティションが消失しているか、ドライブ全体が未割り当ての場合。
Renee Undeleterでディスクの完全スキャンを選択
対象のパーティションまたは物理ディスクを選択し、「次へ」をクリックします。

3. ディスクをスキャンし、別の場所にファイルを復旧する

スキャンには、ドライブの容量や状態によって時間がかかることがあります。実行中でもファイルをプレビューできます。次を探してください:
- .gitフォルダ とその内容物(objectsrefsHEADconfig)。
- .git/objects/pack/内の Packファイル
- 実際のソースコードおよびプロジェクトファイル。
必要なファイルが見つかったら、それらにチェックを入れて「復元」をクリックします。
Renee Undeleterで復旧するファイルをプレビューして選択
最重要:保存先の選択画面では必ず、別の正常なドライブ上のフォルダを選んでください。元のディスクに保存すると、まだ復旧していないデータを上書きしてしまうおそれがあります。
ディスク全体のデータを復旧

4. Gitリポジトリを再構築し、検証する

復旧した.gitフォルダを、正常なドライブ上のプロジェクトディレクトリにコピーします。そのフォルダでターミナルを開き、まずgit fsck --fullを実行します。
git fsck --full
「dangling」オブジェクトのエラーが表示されるかもしれませんが、これは正常です。「object file is empty」や「broken link」といった重大なエラーは減っているはずです。次に、git fetch originを実行してリモートから最新の履歴をフェッチし、残りの欠落オブジェクトを補完します。未プッシュのコミットがないかを確認し、リモートと一致させてよい場合のみ、次のリセットを行います:
git fetch origin
git reset --hard origin/main # またはデフォルトブランチ名
リモートが利用できない場合は、チームメンバーのクローンやバックアップから、まだ欠落しているオブジェクトを手動で置き換えます。

リポジトリが再び使えるかの確認方法

リポジトリを再構築した後、その整合性を確認します:
1. 実行: git fsck --full 出力が空であるか、 dangling objects のみが表示される場合、オブジェクトデータベースはクリーンです。
2. 実行: git status 通常のワーキングツリーが表示され、復元された変更が含まれている可能性があります。
3. 実行: git log --oneline -10 最近のコミットが正しいメッセージとタイムスタンプと共に表示されるはずです。
4. 実行: git branch -a すべてのローカルブランチおよびリモート追跡ブランチが表示されるはずです。
5. 主要なプロジェクトファイルを開く :内容が無傷で、0バイトになっていないことを確認します。

判断基準

git fsckがエラーを報告せず、git logが期待通りの履歴を表示し、ファイルが正しく開く場合、リポジトリは安全に使用できます。直ちに復旧したすべてのコミットをリモートにプッシュしてください:
git push --all origin
その後、修復したリポジトリの新しい完全バックアップを作成してください。もしgit fsckが依然として修復不可能な問題を報告する場合は、リモートからクリーンなコピーをクローンし、復旧したソースファイルを手動で再適用してください。

よくある質問(FAQ)

Renee Undeleterは個別のコミットやblobなど、特定のGitオブジェクトを復元できますか?

Renee Undeleterは、Git固有のオブジェクトハッシュではなく、内部構造と拡張子に基づいてファイルを復旧します。ドライブをスキャンすると、.git/objects/フォルダ(存在するすべてのルースオブジェクトやpackファイルを含む)を取得できます。これらのファイルが正常なディスクに戻れば、Git自身のfsckでどのオブジェクトがまだ有効かを識別できます。実際には、ディスク上に物理的に残っていたオブジェクトを復旧することになります。ソフトウェアが個々のcommitblob単位で処理するわけではありません。

破損したリポジトリの修復を試みるよりも、再クローンする方が常に安全ですか?

リモートに完全な履歴がある場合、再クローンはほぼ間違いなく最もクリーンで安全な選択肢です。一貫性のあるオブジェクトデータベースが保証されます。ただし、役立つのはリモートが最新の場合に限ります。ディスク破損で未プッシュのローカルコミットが失われたなら(まさに本記事の想定する「Gitリポジトリのファイル消失・ディスク破損」のシナリオ)、再クローンではそれらは戻りません。その場合は、まずローカルの.gitデータを復旧してください。復旧してプッシュが完了したら、新しいクローンに切り替えて構いません。

Gitメタデータの破損ではなく、ディスク自体の故障かどうかを見分けるには?

ディスク故障の兆候には、異常音(カチカチ音や軋み)、極端に遅い読み書き、Gitフォルダ以外でも繰り返し発生するI/Oエラー、CrystalDiskInfoなどのツールでのS.M.A.R.T.警告 などがあります。ディスクが完全なサーフェススキャン(例:chkdsk /r)を完了でき、.gitだけに問題があるなら、論理的な不具合の可能性が高いです。サーフェススキャンを完了できない、または多数の代替処理済みセクタが出る場合は、ハードウェア故障の疑いが強く、使い続けるとデータを完全に失うリスクがあります。
おすすめ 無料でデータ復旧を開始 データ復元ソフトRenee Undeleter

操作簡単 ウィザード形式で初心者も自力で復元可能。

100%安全 読み取り専用モードでデバイスをスキャンし、データをお見つけ出すだけで、データへの修正等の操作は一切ありません。

500以上種類のデータ復元対応 音楽、動画、地図、ワード、ドキュメント、PDF、メール、写真等よく利用されるファイルを復元可能。

プレビュー機能付き スキャン中もプレビュー可能、目標データが出たら、スキャンを中止でき、高速に復元可能。

多OS支持Windows 11, 10,8.1,8,7,Vista,XP,2000及びMac OS X10.6,10.7,10.8

操作簡単 ウィザード形式で初心者も自力で復元可能。

100%安全 読み取り専用モード復元、データへの修正等の操作...

500以上種類のデータ復元対応 音楽、動画、メール、写真等復...

無料体験無料体験無料体験 122653名のユーザー様に体験をしていただきました!

ユーザーコメント

Page 1

コメントを残す


あなたのコメントは送信され、承認待ちです。