失われたファイルの復元

GitBeginner
オンラインで実践に進む

はじめに

開発者として、重要なファイルを誤って削除し、そのままコミットしてしまうという状況に直面することがあります。このチャレンジではそのようなシナリオをシミュレートし、Git の履歴確認ツールや状態復元ツールを使用して、失われたファイルを回収し、プロジェクトを正常な状態に戻す能力をテストします。

失われたファイルの復元

このチャレンジを開始する前に、~/project/important-project ディレクトリに Git リポジトリが初期化されています。このリポジトリには、2 つの重要なファイルの作成とその後の誤った削除を含む、いくつかのコミットが含まれています。以下の状況を把握しておいてください:

  • リポジトリは README.md ファイルを追加する最初のコミット(Initial commit)で作成されました。
  • その後のコミットで、important_algorithm.pycrucial_data.txt という 2 つの重要なファイルが追加されました。
  • その後、いくつかの変更を伴うコミットが行われました。
  • ある時点で、important_algorithm.pycrucial_data.txt が誤って削除され、その削除がコミットされました。
  • 誤った削除の後にも、少なくとも 1 つのコミットが行われています。

あなたのタスクは、リポジトリの履歴を辿って削除されたファイルを復元し、復元したファイルをコミットすることです。

タスク

  1. リポジトリの履歴を調査し、important_algorithm.pycrucial_data.txt がいつ削除されたかを特定してください。
  2. 削除される直前の状態にリポジトリを復元してください。
  3. 元のコミット履歴を維持したまま、"Recover deleted files" というメッセージで新しいコミットを作成してください。

要件

  • ~/project/important-project ディレクトリで作業すること。
  • 復元後、important_algorithm.pycrucial_data.txt が存在していること。
  • 最後のコミットメッセージが "Recover deleted files" であり、コミット履歴が保存されていること。

チャレンジを正常に完了した後、プロジェクトディレクトリで ls を実行すると以下のように表示されるはずです:

$ ls ~/project/important-project
important_algorithm.py crucial_data.txt README.md

git status を実行すると、ワーキングツリーがクリーンな状態であるはずです:

$ git status
On branch master
nothing to commit, working tree clean

また、git log を実行すると、一番上に新しいコミットが表示されるはずです:

$ git log --oneline
8876d8b (HEAD -> master) Recover deleted files
9b3525c Update project status
5e6234c Oops, accidentally deleted important files
9de9506 Update algorithm TODO
01c36ae Add crucial data and algorithm
638a98d Initial commit
✨ 解答を確認して練習

まとめ

このチャレンジでは、誤ってファイルを削除してしまうという、Git でよくあるシナリオに対処しました。以下の方法を学びました:

  1. HEAD の変更を伴う操作を含む、リポジトリの完全な履歴(reflog)を調査する方法。
  2. リポジトリを特定の過去の状態に戻し、プロジェクトの「時間を巻き戻す」方法。
  3. 復元された状態を保存するために新しいコミットを作成する方法。

これらのスキルは、失われたコミットの発見、ミスの取り消し、そして明確なプロジェクト履歴の維持において非常に価値があります。これらのツールは万が一の事態からあなたを救ってくれますが、そもそもこのような状況を避けるために、慎重に作業し、こまめに文書化されたコミットを行うことが最善であることを忘れないでください。

このチャレンジを完了したことで、Git の最も強力な復元ツールのいくつかを実践的に体験しました。これらのスキルは、あなたの開発キャリアを通じて大いに役立つはずです。